[SCM] Samba Shared Repository - branch master updated
Noel Power
npower at samba.org
Mon Mar 22 19:45:02 UTC 2021
The branch, master has been updated
via d6a16ad00e4 s3:modules:vfs_virusfilter: Recent New_VFS changes break vfs_virusfilter_openat.
via 4af98681425 s3: VFS: default: vfswrap_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
via 8f38f886ffa s3: VFS: time_audit: Log full pathname as smb_time_audit_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
via 49bcb913398 s3: VFS: full_audit: Log full pathname as smb_full_audit_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
via ea5c15358f1 s3: VFS: gluster: vfs_gluster_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
via c344ade7178 s3: VFS: ceph: cephwrap_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
from ec4794b5d9e s3:param: Fix segfault trying to add pcap printer without a [printers] share
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit d6a16ad00e426a6f815215af71c071dd8e85a50a
Author: Trever L. Adams <trever.adams at gmail.com>
Date: Sat Mar 13 12:47:21 2021 -0700
s3:modules:vfs_virusfilter: Recent New_VFS changes break vfs_virusfilter_openat.
The_New_VFS introduces several changes that broke vfs_virusfilter_openat. The assert to make sure certain checks would work broke.
This patch fixes those breaks and converts to the SMB_VFS_FSTAT_NEXT instead of SMB_VFS_STAT_NEXT.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14671
RN: vfs_virusfilter_openat support New_VFS FSTAT, avoid SMB_ASSERT(fsp_get_pathref_fd(dirfsp) == AT_FDCWD); problem.
Signed-off-by: Trever L. Adams" <trever.adams at gmail.com>
Reviewed-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
Autobuild-User(master): Noel Power <npower at samba.org>
Autobuild-Date(master): Mon Mar 22 19:44:30 UTC 2021 on sn-devel-184
commit 4af9868142529187a87b30cd522a144ead76cc8c
Author: Jeremy Allison <jra at samba.org>
Date: Tue Mar 16 18:26:43 2021 -0700
s3: VFS: default: vfswrap_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power<npower at samba.org>
commit 8f38f886ffa0845626de4d94e45685376f790d46
Author: Jeremy Allison <jra at samba.org>
Date: Tue Mar 16 21:50:08 2021 -0700
s3: VFS: time_audit: Log full pathname as smb_time_audit_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power<npower at samba.org>
commit 49bcb913398492f08a3d6d9b1ac36ff0563f71d7
Author: Jeremy Allison <jra at samba.org>
Date: Tue Mar 16 21:49:14 2021 -0700
s3: VFS: full_audit: Log full pathname as smb_full_audit_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power<npower at samba.org>
commit ea5c15358f12a6cd584b52039411e0feb526f380
Author: Jeremy Allison <jra at samba.org>
Date: Tue Mar 16 21:48:42 2021 -0700
s3: VFS: gluster: vfs_gluster_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit c344ade717853b2622602d2f1fa38d073ffc2810
Author: Jeremy Allison <jra at samba.org>
Date: Tue Mar 16 21:48:07 2021 -0700
s3: VFS: ceph: cephwrap_create_dfs_pathat() isn't restricted to dirfsp->conn->cwd_fsp anymore.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power<npower at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source3/modules/vfs_ceph.c | 12 +++++++++---
source3/modules/vfs_default.c | 4 +---
source3/modules/vfs_full_audit.c | 11 ++++++++++-
source3/modules/vfs_glusterfs.c | 10 ++++++++--
source3/modules/vfs_time_audit.c | 14 ++++++++++++--
source3/modules/vfs_virusfilter.c | 8 ++------
6 files changed, 42 insertions(+), 17 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index e2f3691bc4f..e371090c95d 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -1379,8 +1379,14 @@ static NTSTATUS cephwrap_create_dfs_pathat(struct vfs_handle_struct *handle,
NTSTATUS status = NT_STATUS_NO_MEMORY;
int ret;
char *msdfs_link = NULL;
+ struct smb_filename *full_fname = NULL;
- SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
+ full_fname = full_path_from_dirfsp_atname(talloc_tos(),
+ dirfsp,
+ smb_fname);
+ if (full_fname == NULL) {
+ goto out;
+ }
/* Form the msdfs_link contents */
msdfs_link = msdfs_link_string(frame,
@@ -1392,7 +1398,7 @@ static NTSTATUS cephwrap_create_dfs_pathat(struct vfs_handle_struct *handle,
ret = ceph_symlink(handle->data,
msdfs_link,
- smb_fname->base_name);
+ full_fname->base_name);
if (ret == 0) {
status = NT_STATUS_OK;
} else {
@@ -1402,7 +1408,7 @@ static NTSTATUS cephwrap_create_dfs_pathat(struct vfs_handle_struct *handle,
out:
DBG_DEBUG("[CEPH] create_dfs_pathat(%s) = %s\n",
- smb_fname->base_name,
+ full_fname->base_name,
nt_errstr(status));
TALLOC_FREE(frame);
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index e48deb022a7..9a2c13d743b 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -386,8 +386,6 @@ static NTSTATUS vfswrap_create_dfs_pathat(struct vfs_handle_struct *handle,
int ret;
char *msdfs_link = NULL;
- SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
-
/* Form the msdfs_link contents */
msdfs_link = msdfs_link_string(frame,
reflist,
@@ -397,7 +395,7 @@ static NTSTATUS vfswrap_create_dfs_pathat(struct vfs_handle_struct *handle,
}
ret = symlinkat(msdfs_link,
- fsp_get_io_fd(dirfsp),
+ fsp_get_pathref_fd(dirfsp),
smb_fname->base_name);
if (ret == 0) {
status = NT_STATUS_OK;
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
index e89307ce6a1..ee26c6a5bfa 100644
--- a/source3/modules/vfs_full_audit.c
+++ b/source3/modules/vfs_full_audit.c
@@ -895,6 +895,14 @@ static NTSTATUS smb_full_audit_create_dfs_pathat(struct vfs_handle_struct *handl
size_t referral_count)
{
NTSTATUS status;
+ struct smb_filename *full_fname = NULL;
+
+ full_fname = full_path_from_dirfsp_atname(talloc_tos(),
+ dirfsp,
+ smb_fname);
+ if (full_fname == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
status = SMB_VFS_NEXT_CREATE_DFS_PATHAT(handle,
dirfsp,
@@ -906,8 +914,9 @@ static NTSTATUS smb_full_audit_create_dfs_pathat(struct vfs_handle_struct *handl
NT_STATUS_IS_OK(status),
handle,
"%s",
- smb_fname_str_do_log(handle->conn, smb_fname));
+ smb_fname_str_do_log(handle->conn, full_fname));
+ TALLOC_FREE(full_fname);
return status;
}
diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
index 38c8a48c378..cb83e012424 100644
--- a/source3/modules/vfs_glusterfs.c
+++ b/source3/modules/vfs_glusterfs.c
@@ -2130,8 +2130,14 @@ static NTSTATUS vfs_gluster_create_dfs_pathat(struct vfs_handle_struct *handle,
NTSTATUS status = NT_STATUS_NO_MEMORY;
int ret;
char *msdfs_link = NULL;
+ struct smb_filename *full_fname = NULL;
- SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
+ full_fname = full_path_from_dirfsp_atname(talloc_tos(),
+ dirfsp,
+ smb_fname);
+ if (full_fname == NULL) {
+ goto out;
+ }
/* Form the msdfs_link contents */
msdfs_link = msdfs_link_string(frame,
@@ -2143,7 +2149,7 @@ static NTSTATUS vfs_gluster_create_dfs_pathat(struct vfs_handle_struct *handle,
ret = glfs_symlink(handle->data,
msdfs_link,
- smb_fname->base_name);
+ full_fname->base_name);
if (ret == 0) {
status = NT_STATUS_OK;
} else {
diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c
index 4c7f65020b1..175da80ff84 100644
--- a/source3/modules/vfs_time_audit.c
+++ b/source3/modules/vfs_time_audit.c
@@ -332,6 +332,14 @@ static NTSTATUS smb_time_audit_create_dfs_pathat(struct vfs_handle_struct *handl
NTSTATUS result;
struct timespec ts1,ts2;
double timediff;
+ struct smb_filename *full_fname = NULL;
+
+ full_fname = full_path_from_dirfsp_atname(talloc_tos(),
+ dirfsp,
+ smb_fname);
+ if (full_fname == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
clock_gettime_mono(&ts1);
result = SMB_VFS_NEXT_CREATE_DFS_PATHAT(handle,
@@ -343,9 +351,11 @@ static NTSTATUS smb_time_audit_create_dfs_pathat(struct vfs_handle_struct *handl
timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
if (timediff > audit_timeout) {
- smb_time_audit_log("get_dfs_referrals", timediff);
+ smb_time_audit_log_smb_fname("create_dfs_pathat",
+ timediff,
+ full_fname);
}
-
+ TALLOC_FREE(full_fname);
return result;
}
diff --git a/source3/modules/vfs_virusfilter.c b/source3/modules/vfs_virusfilter.c
index e7017ee1c7a..25ef4b32490 100644
--- a/source3/modules/vfs_virusfilter.c
+++ b/source3/modules/vfs_virusfilter.c
@@ -1243,11 +1243,7 @@ static int virusfilter_vfs_openat(struct vfs_handle_struct *handle,
bool ok1;
char *sret = NULL;
struct smb_filename *smb_fname = NULL;
-
- /*
- * For now assert this, so SMB_VFS_NEXT_STAT() below works.
- */
- SMB_ASSERT(fsp_get_pathref_fd(dirfsp) == AT_FDCWD);
+ SMB_STRUCT_STAT sbuf = smb_fname_in->st;
SMB_VFS_HANDLE_GET_DATA(handle, config,
struct virusfilter_config, return -1);
@@ -1289,7 +1285,7 @@ static int virusfilter_vfs_openat(struct vfs_handle_struct *handle,
goto virusfilter_vfs_open_next;
}
- ret = SMB_VFS_NEXT_STAT(handle, smb_fname);
+ ret = SMB_VFS_NEXT_FSTAT(handle, fsp, &sbuf);
if (ret != 0) {
/*
--
Samba Shared Repository
More information about the samba-cvs
mailing list