[SCM] Samba Shared Repository - branch master updated
Ralph Böhme
slow at samba.org
Fri Oct 23 09:20:02 UTC 2020
The branch, master has been updated
via 63a4e883582 smbd: split out POSIX info_levels from smbd_do_setfilepathinfo() into own function
via 537069b6e05 smbd: mark UCF_UNIX_NAME_LOOKUP as unused
via df92b06f5be smbd: remove use of UCF_UNIX_NAME_LOOKUP
via 29e212dd6a4 smbd: use UCF_POSIX_PATHNAMES flag for path validation logic in filename_convert_internal()
via 71a57596239 smbd: base POSIX semantics of call_trans2findfirst() on SMB_FILENAME_POSIX_PATH flag
via 2e5e49e41dc smbd: let directory entries inherit the smb_fname->flags from the directory
via 42b8a431f04 smbd: base POSIX semantics in call_trans2findfirst() on req->posix_pathnames
via 0d6d53a9209 vfs_default: allow dirfsps in the link VFS functions
via 5161edbdb28 selftest: remove POSIX test from planned tests for ad_dc_ntvfs environ
via 219a44ee5ff vfs_streams_depot: only assert AT_FDCWD for streams
via ac45ce0227d vfs_streams_xattr: only assert AT_FDCWD for streams
via 3caf53a0546 smbd: fix order of smb_fname flags and twrp args in call_trans2findfirst()
via 3df5f851c67 smbd: fix order of smb_fname flags and twrp args in unlink_internals()
via c4cbe0610cf vfs: make dirfsp arg to SMB_VFS_READLINKAT() const
from 54b4d2d3cb3 wb_sids2xids: defer/skip wb_lookupsids* unless we get ID_TYPE_WB_REQUIRE_TYPE
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 63a4e8835824f0f0696223c0a3b0afb207595078
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 22 12:26:17 2020 +0200
smbd: split out POSIX info_levels from smbd_do_setfilepathinfo() into own function
smbd_do_setfilepathinfo() can be made fully handle based for all non-POSIX
infolevels with pathref fsps, but for a POSIX create we may not have a fsp if
the path points at a symlink.
Splitting the POSIX from the non-POSIX logic allows for cleaner handling of this
in the future with pathref fsps.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Ralph Böhme <slow at samba.org>
Autobuild-Date(master): Fri Oct 23 09:19:12 UTC 2020 on sn-devel-184
commit 537069b6e05fafbf7103405e755d8bbb69eafdae
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 22 11:12:11 2020 +0200
smbd: mark UCF_UNIX_NAME_LOOKUP as unused
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit df92b06f5beba89d1394bb38f6ab6d354cfc88e2
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 22 11:10:32 2020 +0200
smbd: remove use of UCF_UNIX_NAME_LOOKUP
This is now handled by SMB_FILENAME_POSIX_PATH.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 29e212dd6a46a5e69ee3ae4ee1a444cf606b0f9e
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 22 11:04:59 2020 +0200
smbd: use UCF_POSIX_PATHNAMES flag for path validation logic in filename_convert_internal()
This change means that if a client path is a symlink, we *always* only call
check_veto_path() for POSIX clients using a POSIX pathname, not just when a
POSIX info-level was used in an SMB request.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 71a57596239e0c9ff307235e4777ffe2bcf92004
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 15 19:50:14 2020 +0200
smbd: base POSIX semantics of call_trans2findfirst() on SMB_FILENAME_POSIX_PATH flag
We really want to apply POSIX semantics in this place whenever the client has
enabled UNIX extensions, not only when using UNIX find info-levels.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 2e5e49e41dc9c4f134db7c98c244237ea3c403cf
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 15 19:45:21 2020 +0200
smbd: let directory entries inherit the smb_fname->flags from the directory
If the listed directory has SMB_FILENAME_POSIX_PATH set, this change causes the
smb_fname of directory entries to inherit the flag so subsequent operations on
the directory entry can correctly implement POSIX semantics.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 42b8a431f04afcd487d3c4c6280ccce06359b508
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 15 10:27:23 2020 +0200
smbd: base POSIX semantics in call_trans2findfirst() on req->posix_pathnames
This will require a SMB1 client to enable SMB1 POSIX extensions, just sending
POSIX info-level requests without first enabling them won't cut it.
As discussed with Jeremy, SMB1 POSIX extensions is a global thing and the client
that wants to use it is expected to enable them explicitly before making use of
POSIX info-levels.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 0d6d53a9209715fb019000f253d79d718fa7c026
Author: Ralph Boehme <slow at samba.org>
Date: Wed Oct 14 15:34:55 2020 +0200
vfs_default: allow dirfsps in the link VFS functions
The functions work just fine with real dirfsps.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 5161edbdb28fcfe44abac8c0caf5ad592c638405
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 15 15:45:06 2020 +0200
selftest: remove POSIX test from planned tests for ad_dc_ntvfs environ
Just don't run the tests instead of retrofitting them to the skiplist.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 219a44ee5fff168c40c0f26b29a54453c3017674
Author: Ralph Boehme <slow at samba.org>
Date: Sat Oct 17 17:00:53 2020 +0200
vfs_streams_depot: only assert AT_FDCWD for streams
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit ac45ce0227d0bdc704b95f650b57da0bdb651251
Author: Ralph Boehme <slow at samba.org>
Date: Sat Oct 17 16:59:55 2020 +0200
vfs_streams_xattr: only assert AT_FDCWD for streams
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 3caf53a0546a1e05bd1ce7e07b987585ebe0ad71
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 15 19:49:24 2020 +0200
smbd: fix order of smb_fname flags and twrp args in call_trans2findfirst()
Also not creating a BUG for this one as I've not seen any reports from the field
that this is causing issues.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 3df5f851c67fcbac01a214ede9bffd3e20231de3
Author: Ralph Boehme <slow at samba.org>
Date: Thu Oct 15 19:48:42 2020 +0200
smbd: fix order of smb_fname flags and twrp args in unlink_internals()
As snapshots are read-only by design, this bug was likely not a real issue so
I'm not creating a BUG for this.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit c4cbe0610cfa275581332c156963301e8c6d013b
Author: Ralph Boehme <slow at samba.org>
Date: Tue Oct 13 15:19:30 2020 +0200
vfs: make dirfsp arg to SMB_VFS_READLINKAT() const
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
examples/VFS/skel_opaque.c | 2 +-
examples/VFS/skel_transparent.c | 2 +-
selftest/knownfail.d/samba3.smbtorture_s3 | 2 +
selftest/skip | 11 --
source3/include/vfs.h | 7 +-
source3/modules/vfs_cap.c | 2 +-
source3/modules/vfs_ceph.c | 2 +-
source3/modules/vfs_ceph_snapshots.c | 2 +-
source3/modules/vfs_default.c | 11 +-
source3/modules/vfs_expand_msdfs.c | 2 +-
source3/modules/vfs_full_audit.c | 2 +-
source3/modules/vfs_glusterfs.c | 2 +-
source3/modules/vfs_media_harmony.c | 2 +-
source3/modules/vfs_not_implemented.c | 2 +-
source3/modules/vfs_shadow_copy2.c | 2 +-
source3/modules/vfs_snapper.c | 2 +-
source3/modules/vfs_streams_depot.c | 10 +-
source3/modules/vfs_streams_xattr.c | 10 +-
source3/modules/vfs_time_audit.c | 2 +-
source3/modules/vfs_unityed_media.c | 2 +-
source3/selftest/tests.py | 1 -
source3/smbd/dir.c | 1 +
source3/smbd/filename.c | 7 +-
source3/smbd/reply.c | 12 +-
source3/smbd/smbd.h | 2 +-
source3/smbd/trans2.c | 294 +++++++++++++++++-------------
source3/smbd/vfs.c | 2 +-
27 files changed, 207 insertions(+), 191 deletions(-)
create mode 100644 selftest/knownfail.d/samba3.smbtorture_s3
Changeset truncated at 500 lines:
diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index 90ee82ab258..2a3a7301bdb 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -474,7 +474,7 @@ static int skel_symlinkat(vfs_handle_struct *handle,
}
static int skel_vfs_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index d48ac47443b..a86b3e7cd19 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -600,7 +600,7 @@ static int skel_symlinkat(vfs_handle_struct *handle,
}
static int skel_vfs_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/selftest/knownfail.d/samba3.smbtorture_s3 b/selftest/knownfail.d/samba3.smbtorture_s3
new file mode 100644
index 00000000000..f56cf2327e9
--- /dev/null
+++ b/selftest/knownfail.d/samba3.smbtorture_s3
@@ -0,0 +1,2 @@
+^samba3.smbtorture_s3.plain.POSIX-LS-WILDCARD.smbtorture\(nt4_dc_smb1\)
+^samba3.smbtorture_s3.crypt.POSIX-LS-WILDCARD.smbtorture\(nt4_dc_smb1\)
diff --git a/selftest/skip b/selftest/skip
index 5bdc10648da..454f8bde33a 100644
--- a/selftest/skip
+++ b/selftest/skip
@@ -40,19 +40,8 @@
^samba3.smbtorture_s3.plain.DIR1\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
^samba3.smbtorture_s3.plain.DIR-CREATETIME\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
^samba3.smbtorture_s3.plain.DELETE-LN\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
^samba3.smbtorture_s3.plain.UID-REGRESSION-TEST\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
^samba3.smbtorture_s3.plain.SHORTNAME-TEST\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-APPEND\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-SYMLINK-ACL\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-SYMLINK-EA\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-OFD-LOCK\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-STREAM-DELETE\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-MKDIR\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-ACL-OPLOCK\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-ACL-SHAREROOT\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.POSIX-BLOCKING-LOCK\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
-^samba3.smbtorture_s3.plain.WINDOWS-BAD-SYMLINK\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
^samba3.smbtorture_s3.plain.RENAME-ACCESS\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
^samba3.smbtorture_s3.plain.OWNER-RIGHTS\(ad_dc_ntvfs\) # Don't test against the s4 ntvfs server anymore
^samba3.smbtorture_s3.plain.PIDHIGH\(ad_dc_ntvfs\) # Fails against the s4 ntvfs server
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index b282e2a361b..22c139607e2 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -330,6 +330,7 @@
* Change to Version 44 - will ship with 4.14.
* Version 44 - Remove dirfsp arg from struct files_struct
* Version 44 - Remove dirfsp arg to SMB_VFS_CREATE_FILE()
+ * Version 44 - Make dirfsp arg to SMB_VFS_READLINKAT() const
*/
#define SMB_VFS_INTERFACE_VERSION 44
@@ -863,7 +864,7 @@ struct vfs_fn_pointers {
struct files_struct *dirfsp,
const struct smb_filename *new_smb_fname);
int (*readlinkat_fn)(struct vfs_handle_struct *handle,
- struct files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz);
@@ -1407,7 +1408,7 @@ int smb_vfs_call_symlinkat(struct vfs_handle_struct *handle,
struct files_struct *dirfsp,
const struct smb_filename *new_smb_fname);
int smb_vfs_call_readlinkat(struct vfs_handle_struct *handle,
- struct files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz);
@@ -1853,7 +1854,7 @@ int vfs_not_implemented_symlinkat(vfs_handle_struct *handle,
struct files_struct *dirfsp,
const struct smb_filename *new_smb_fname);
int vfs_not_implemented_vfs_readlinkat(vfs_handle_struct *handle,
- struct files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz);
diff --git a/source3/modules/vfs_cap.c b/source3/modules/vfs_cap.c
index 93f0454c608..5deb7754f02 100644
--- a/source3/modules/vfs_cap.c
+++ b/source3/modules/vfs_cap.c
@@ -519,7 +519,7 @@ static int cap_symlinkat(vfs_handle_struct *handle,
}
static int cap_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index a87d162e573..546502eb88f 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -1051,7 +1051,7 @@ static int cephwrap_symlinkat(struct vfs_handle_struct *handle,
}
static int cephwrap_readlinkat(struct vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_ceph_snapshots.c b/source3/modules/vfs_ceph_snapshots.c
index 9ff5b9de074..80dfb48c201 100644
--- a/source3/modules/vfs_ceph_snapshots.c
+++ b/source3/modules/vfs_ceph_snapshots.c
@@ -1023,7 +1023,7 @@ static int ceph_snap_gmt_ntimes(vfs_handle_struct *handle,
}
static int ceph_snap_gmt_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *csmb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 49e92ffea55..7ea9b716e21 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -2873,8 +2873,6 @@ static int vfswrap_symlinkat(vfs_handle_struct *handle,
START_PROFILE(syscall_symlinkat);
- SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
-
result = symlinkat(link_target->base_name,
dirfsp->fh->fd,
new_smb_fname->base_name);
@@ -2883,7 +2881,7 @@ static int vfswrap_symlinkat(vfs_handle_struct *handle,
}
static int vfswrap_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
@@ -2892,8 +2890,6 @@ static int vfswrap_readlinkat(vfs_handle_struct *handle,
START_PROFILE(syscall_readlinkat);
- SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
-
result = readlinkat(dirfsp->fh->fd,
smb_fname->base_name,
buf,
@@ -2914,9 +2910,6 @@ static int vfswrap_linkat(vfs_handle_struct *handle,
START_PROFILE(syscall_linkat);
- SMB_ASSERT(srcfsp == srcfsp->conn->cwd_fsp);
- SMB_ASSERT(dstfsp == dstfsp->conn->cwd_fsp);
-
result = linkat(srcfsp->fh->fd,
old_smb_fname->base_name,
dstfsp->fh->fd,
@@ -2937,8 +2930,6 @@ static int vfswrap_mknodat(vfs_handle_struct *handle,
START_PROFILE(syscall_mknodat);
- SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
-
result = sys_mknodat(dirfsp->fh->fd,
smb_fname->base_name,
mode,
diff --git a/source3/modules/vfs_expand_msdfs.c b/source3/modules/vfs_expand_msdfs.c
index 6845b81b0cb..7deeb2b7374 100644
--- a/source3/modules/vfs_expand_msdfs.c
+++ b/source3/modules/vfs_expand_msdfs.c
@@ -183,7 +183,7 @@ static char *expand_msdfs_target(TALLOC_CTX *ctx,
}
static int expand_msdfs_readlinkat(struct vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
index 5fceac6cf1f..f1823e3b22e 100644
--- a/source3/modules/vfs_full_audit.c
+++ b/source3/modules/vfs_full_audit.c
@@ -1813,7 +1813,7 @@ static int smb_full_audit_symlinkat(vfs_handle_struct *handle,
}
static int smb_full_audit_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
index bf7244ea3a5..ca8b54829cd 100644
--- a/source3/modules/vfs_glusterfs.c
+++ b/source3/modules/vfs_glusterfs.c
@@ -1703,7 +1703,7 @@ static int vfs_gluster_symlinkat(struct vfs_handle_struct *handle,
}
static int vfs_gluster_readlinkat(struct vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_media_harmony.c b/source3/modules/vfs_media_harmony.c
index e3ce2804b5f..12e7ad61806 100644
--- a/source3/modules/vfs_media_harmony.c
+++ b/source3/modules/vfs_media_harmony.c
@@ -1643,7 +1643,7 @@ out:
* Failure: set errno, return -1
*/
static int mh_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_not_implemented.c b/source3/modules/vfs_not_implemented.c
index 9b5b0f6b4f6..59aaddb163a 100644
--- a/source3/modules/vfs_not_implemented.c
+++ b/source3/modules/vfs_not_implemented.c
@@ -472,7 +472,7 @@ int vfs_not_implemented_symlinkat(vfs_handle_struct *handle,
}
int vfs_not_implemented_vfs_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c
index 0780895b0dd..e5413b75128 100644
--- a/source3/modules/vfs_shadow_copy2.c
+++ b/source3/modules/vfs_shadow_copy2.c
@@ -1568,7 +1568,7 @@ static int shadow_copy2_ntimes(vfs_handle_struct *handle,
}
static int shadow_copy2_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_snapper.c b/source3/modules/vfs_snapper.c
index 8f239c6cb3f..3663bf2d4a3 100644
--- a/source3/modules/vfs_snapper.c
+++ b/source3/modules/vfs_snapper.c
@@ -2237,7 +2237,7 @@ static int snapper_gmt_ntimes(vfs_handle_struct *handle,
}
static int snapper_gmt_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_streams_depot.c b/source3/modules/vfs_streams_depot.c
index dca814f5df0..bd2ad48656d 100644
--- a/source3/modules/vfs_streams_depot.c
+++ b/source3/modules/vfs_streams_depot.c
@@ -627,11 +627,6 @@ static int streams_depot_openat(struct vfs_handle_struct *handle,
NTSTATUS status;
int ret = -1;
- /*
- * For now assert this so the below SMB_VFS_STAT() is ok.
- */
- SMB_ASSERT(dirfsp->fh->fd == AT_FDCWD);
-
if (!is_named_stream(smb_fname)) {
return SMB_VFS_NEXT_OPENAT(handle,
dirfsp,
@@ -641,6 +636,11 @@ static int streams_depot_openat(struct vfs_handle_struct *handle,
mode);
}
+ /*
+ * For now assert this so the below SMB_VFS_STAT() is ok.
+ */
+ SMB_ASSERT(dirfsp->fh->fd == AT_FDCWD);
+
/* Ensure the base file still exists. */
smb_fname_base = synthetic_smb_fname(talloc_tos(),
smb_fname->base_name,
diff --git a/source3/modules/vfs_streams_xattr.c b/source3/modules/vfs_streams_xattr.c
index 13ea46b0806..2f786327835 100644
--- a/source3/modules/vfs_streams_xattr.c
+++ b/source3/modules/vfs_streams_xattr.c
@@ -375,11 +375,6 @@ static int streams_xattr_openat(struct vfs_handle_struct *handle,
bool set_empty_xattr = false;
int ret;
- /*
- * For now assert this, so the below SMB_VFS_SETXATTR() works.
- */
- SMB_ASSERT(dirfsp->fh->fd == AT_FDCWD);
-
SMB_VFS_HANDLE_GET_DATA(handle, config, struct streams_xattr_config,
return -1);
@@ -395,6 +390,11 @@ static int streams_xattr_openat(struct vfs_handle_struct *handle,
mode);
}
+ /*
+ * For now assert this, so the below SMB_VFS_SETXATTR() works.
+ */
+ SMB_ASSERT(dirfsp->fh->fd == AT_FDCWD);
+
status = streams_xattr_get_name(handle, talloc_tos(),
smb_fname->stream_name, &xattr_name);
if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c
index c6b0130bb93..7ff0b24cced 100644
--- a/source3/modules/vfs_time_audit.c
+++ b/source3/modules/vfs_time_audit.c
@@ -1433,7 +1433,7 @@ static int smb_time_audit_symlinkat(vfs_handle_struct *handle,
}
static int smb_time_audit_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/modules/vfs_unityed_media.c b/source3/modules/vfs_unityed_media.c
index ca20dc6baeb..014420fd961 100644
--- a/source3/modules/vfs_unityed_media.c
+++ b/source3/modules/vfs_unityed_media.c
@@ -1284,7 +1284,7 @@ err:
}
static int um_readlinkat(vfs_handle_struct *handle,
- files_struct *dirfsp,
+ const struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 604a13b95da..b9c44398e81 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -228,7 +228,6 @@ posix_tests = ["POSIX", "POSIX-APPEND", "POSIX-SYMLINK-ACL", "POSIX-SYMLINK-EA",
for t in posix_tests:
plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
plantestsuite("samba3.smbtorture_s3.crypt.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
- plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "ad_dc_ntvfs", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
local_tests = [
"LOCAL-SUBSTITUTE",
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c
index 0001726e582..6b5b4715d54 100644
--- a/source3/smbd/dir.c
+++ b/source3/smbd/dir.c
@@ -872,6 +872,7 @@ bool smbd_dirptr_get_entry(TALLOC_CTX *ctx,
.base_name = pathreal,
.st = sbuf,
.twrp = dirptr->smb_dname->twrp,
+ .flags = dirptr->smb_dname->flags,
};
ok = mode_fn(ctx, private_data, &smb_fname, get_dosmode, &mode);
diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
index 00e5d93cc95..716e10d9914 100644
--- a/source3/smbd/filename.c
+++ b/source3/smbd/filename.c
@@ -1961,9 +1961,10 @@ static NTSTATUS filename_convert_internal(TALLOC_CTX *ctx,
return status;
}
- if ((ucf_flags & UCF_UNIX_NAME_LOOKUP) &&
- VALID_STAT(smb_fname->st) &&
- S_ISLNK(smb_fname->st.st_ex_mode)) {
+ if ((ucf_flags & UCF_POSIX_PATHNAMES) &&
+ VALID_STAT(smb_fname->st) &&
+ S_ISLNK(smb_fname->st.st_ex_mode))
+ {
status = check_veto_path(conn, smb_fname);
if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(smb_fname);
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 51f95f565c0..8dfc97c8586 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -3446,8 +3446,8 @@ NTSTATUS unlink_internals(connection_struct *conn,
p,
NULL,
&smb_fname->st,
- smb_fname->flags,
- smb_fname->twrp);
+ smb_fname->twrp,
+ smb_fname->flags);
if (f == NULL) {
TALLOC_FREE(dir_hnd);
status = NT_STATUS_NO_MEMORY;
@@ -8270,13 +8270,9 @@ void reply_mv(struct smb_request *req)
struct smb_filename *smb_fname_dst = NULL;
const char *dst_original_lcomp = NULL;
uint32_t src_ucf_flags = ucf_flags_from_smb_request(req) |
- (req->posix_pathnames ?
- UCF_UNIX_NAME_LOOKUP :
- UCF_ALWAYS_ALLOW_WCARD_LCOMP);
+ (!req->posix_pathnames ? UCF_ALWAYS_ALLOW_WCARD_LCOMP : 0);
uint32_t dst_ucf_flags = ucf_flags_from_smb_request(req) |
- (req->posix_pathnames ?
- 0 :
- UCF_ALWAYS_ALLOW_WCARD_LCOMP);
+ (!req->posix_pathnames ? UCF_ALWAYS_ALLOW_WCARD_LCOMP : 0);
bool stream_rename = false;
START_PROFILE(SMBmv);
diff --git a/source3/smbd/smbd.h b/source3/smbd/smbd.h
index b7d2bbb5408..fb277bde780 100644
--- a/source3/smbd/smbd.h
+++ b/source3/smbd/smbd.h
@@ -63,7 +63,7 @@ struct trans_state {
#define UCF_ALWAYS_ALLOW_WCARD_LCOMP 0x00000002
/* UCF_COND_ALLOW_WCARD_LCOMP 0x00000004 is no longer used. */
#define UCF_POSIX_PATHNAMES 0x00000008
-#define UCF_UNIX_NAME_LOOKUP 0x00000010
+/* #define UCF_UNIX_NAME_LOOKUP 0x00000010 is no longer used. */
#define UCF_PREP_CREATEFILE 0x00000020
/*
* Use the same bit as FLAGS2_REPARSE_PATH
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index f9300efee9a..2e2b9e899a5 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -1784,7 +1784,7 @@ static bool smbd_dirptr_lanman2_mode_fn(TALLOC_CTX *ctx,
bool ms_dfs_link = false;
uint32_t mode = 0;
- if (INFO_LEVEL_IS_UNIX(state->info_level)) {
+ if (smb_fname->flags & SMB_FILENAME_POSIX_PATH) {
if (SMB_VFS_LSTAT(state->conn, smb_fname) != 0) {
DEBUG(5,("smbd_dirptr_lanman2_mode_fn: "
"Couldn't lstat [%s] (%s)\n",
@@ -2784,19 +2784,21 @@ close_if_end = %d requires_resume_key = %d backup_priv = %d level = 0x%x, max_da
break;
case SMB_FIND_FILE_UNIX:
case SMB_FIND_FILE_UNIX_INFO2:
- /* Always use filesystem for UNIX mtime query. */
- ask_sharemode = false;
if (!lp_unix_extensions()) {
reply_nterror(req, NT_STATUS_INVALID_LEVEL);
goto out;
}
- ucf_flags |= UCF_UNIX_NAME_LOOKUP;
break;
default:
reply_nterror(req, NT_STATUS_INVALID_LEVEL);
goto out;
}
+ if (req->posix_pathnames) {
+ /* Always use filesystem for UNIX mtime query. */
+ ask_sharemode = false;
+ }
+
if (req->posix_pathnames) {
srvstr_get_path_posix(talloc_tos(),
params,
@@ -2881,8 +2883,8 @@ close_if_end = %d requires_resume_key = %d backup_priv = %d level = 0x%x, max_da
".",
NULL,
&old_name->st,
- old_name->flags,
- old_name->twrp);
+ old_name->twrp,
+ old_name->flags);
TALLOC_FREE(old_name);
if (smb_dname == NULL) {
reply_nterror(req, NT_STATUS_NO_MEMORY);
@@ -6143,12 +6145,6 @@ static void call_trans2qfilepathinfo(connection_struct *conn,
reply_nterror(req, NT_STATUS_INVALID_LEVEL);
return;
}
- if (info_level == SMB_QUERY_FILE_UNIX_BASIC ||
- info_level == SMB_QUERY_FILE_UNIX_INFO2 ||
--
Samba Shared Repository
More information about the samba-cvs
mailing list