[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Mon May 22 20:50:02 UTC 2017
The branch, master has been updated
via 4c234a9 s3: smbd: Correctly identify a snapshot path using UCF_GMT_PATHNAME.
via aa72d09 s3: smbd: Add UCF_GMT_PATHNAME, which represents FLAGS2_REPARSE_PATH.
via 1c9183b s3: smbd: Fix up the ucf_flags correctly in smb_file_rename_information().
via f2f936a s3: smbd: We can now remove the 'bool dfs_path' parameter from filename_convert().
via 0fbf5b6 s3: smbd: Add UCF_DFS_PATHNAME which tracks the flags2 FLAGS2_DFS_PATHNAMES bit.
via 29ec474 s3: smbd: In ntrename OR in ucf_flags, don't overwrite.
via 4910feb s3: smbd: Always use ucf_flags_from_smb_request() in place of checking by hand (in most cases).
via f5866c6 s3: smbd: Split out ucf_flags_from_smb_request() from filename_create_ucf_flags().
via 8a2aa27 s3: smbd: Make it clear we only overwrite *ppath_contains_wcard if resolve_dfspath_wcard() detected a wildcard.
via 0e1c068 s3: smbd: Remove ugly use of discard_const that previously was hidden in resolve_dfspath_wcard().
via 2647eed s3: smbd: Remove bool dfs_pathnames paramter from resolve_dfspath_wcard().
from 2732411 s4:libcli/ldap: just use gensec_update() in ldap_bind_sasl()
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 4c234a90a9f5eed578857368c35b7b518b98a8f7
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 13:28:23 2017 -0700
s3: smbd: Correctly identify a snapshot path using UCF_GMT_PATHNAME.
All our client code already does this correctly for @GMT names.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Mon May 22 22:49:17 CEST 2017 on sn-devel-144
commit aa72d09b3130ef61f1be5713b8f2c016ac5bc551
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 13:24:26 2017 -0700
s3: smbd: Add UCF_GMT_PATHNAME, which represents FLAGS2_REPARSE_PATH.
This must be set by a client to use shadow copy (@GMT) paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit 1c9183bb381fa60e2118f5f874435c3a0f93e22d
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 13:22:36 2017 -0700
s3: smbd: Fix up the ucf_flags correctly in smb_file_rename_information().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit f2f936a961e184b6760400de9b0b72820c690b6e
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 12:29:50 2017 -0700
s3: smbd: We can now remove the 'bool dfs_path' parameter from filename_convert().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit 0fbf5b644d67df2bd47691f4240dbcaffaecc407
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 12:18:58 2017 -0700
s3: smbd: Add UCF_DFS_PATHNAME which tracks the flags2 FLAGS2_DFS_PATHNAMES bit.
Set inside ucf_flags_from_smb_request(). This will allow us to
remove the req->flags2 & FLAGS2_DFS_PATHNAMES parameter from
filename_convert().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit 29ec4744542230c93c209acfe2a5d6144707b332
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 12:08:57 2017 -0700
s3: smbd: In ntrename OR in ucf_flags, don't overwrite.
This isn't worth a bug backport as right now the only flag that
could be overwritten is the UCF_POSIX_PATHNAMES flag, and for
a POSIX connection the client will use posix rename, not an
ntrename.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit 4910febdac9cf282597349e85610e582001a3c54
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 12:08:00 2017 -0700
s3: smbd: Always use ucf_flags_from_smb_request() in place of checking by hand (in most cases).
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit f5866c66a44703000edf99ecae4429e877332ccd
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 11:56:39 2017 -0700
s3: smbd: Split out ucf_flags_from_smb_request() from filename_create_ucf_flags().
We will use this elsewhere in later commits.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit 8a2aa27f745ec1d611f3ece307cea15d0002df9e
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 11:41:10 2017 -0700
s3: smbd: Make it clear we only overwrite *ppath_contains_wcard if resolve_dfspath_wcard() detected a wildcard.
The API for this function specifies that *ppath_contains_wcard
must already have been initialized on entry to filename_convert()
(not a great design, but that's the way it is currently).
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit 0e1c0684c2b3406cd04b817a8def0bd080ce0f02
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 11:36:56 2017 -0700
s3: smbd: Remove ugly use of discard_const that previously was hidden in resolve_dfspath_wcard().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
commit 2647eedb6151a0e06b62412ff5485fe7a83b7279
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 18 11:34:33 2017 -0700
s3: smbd: Remove bool dfs_pathnames paramter from resolve_dfspath_wcard().
Start cleaning up the pathname parsing to move flags2 checks into UCF_FLAGS
function.
NB. This now only sets *ppath_contains_wcard inside resolve_dfspath_wcard()
if dfs_redirect() sets path_contains_wcard to true, which is a change
from the previous code which could potentially set *ppath_contains_wcard
to an uninitialized value if dfs_redirect() returned without setting
path_contains_wcard.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Uri Simchoni <uri at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 2 -
source3/smbd/filename.c | 62 ++++++++++++++++++++-----------
source3/smbd/msdfs.c | 34 +++++++----------
source3/smbd/nttrans.c | 12 ++----
source3/smbd/open.c | 4 +-
source3/smbd/proto.h | 3 +-
source3/smbd/reply.c | 47 +++++++++--------------
source3/smbd/smb2_create.c | 8 +++-
source3/smbd/smb2_query_directory.c | 1 -
source3/smbd/smbd.h | 10 +++++
source3/smbd/trans2.c | 46 ++++++++++-------------
11 files changed, 113 insertions(+), 116 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
index 513ef17..fdf42ea 100644
--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
@@ -2358,7 +2358,6 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p,
nt_status = filename_convert(talloc_tos(),
conn,
- false,
r->in.file,
ucf_flags,
NULL,
@@ -2508,7 +2507,6 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p,
nt_status = filename_convert(talloc_tos(),
conn,
- false,
r->in.file,
ucf_flags,
NULL,
diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
index 2d85e8d..084849d 100644
--- a/source3/smbd/filename.c
+++ b/source3/smbd/filename.c
@@ -30,14 +30,31 @@
#include "smbd/smbd.h"
#include "smbd/globals.h"
-uint32_t filename_create_ucf_flags(struct smb_request *req, uint32_t create_disposition)
+uint32_t ucf_flags_from_smb_request(struct smb_request *req)
{
uint32_t ucf_flags = 0;
- if (req != NULL && req->posix_pathnames) {
- ucf_flags |= UCF_POSIX_PATHNAMES;
+ if (req != NULL) {
+ if (req->posix_pathnames) {
+ ucf_flags |= UCF_POSIX_PATHNAMES;
+ }
+ if (req->flags2 & FLAGS2_DFS_PATHNAMES) {
+ ucf_flags |= UCF_DFS_PATHNAME;
+ }
+ if (req->flags2 & FLAGS2_REPARSE_PATH) {
+ ucf_flags |= UCF_GMT_PATHNAME;
+ }
}
+ return ucf_flags;
+}
+
+uint32_t filename_create_ucf_flags(struct smb_request *req, uint32_t create_disposition)
+{
+ uint32_t ucf_flags = 0;
+
+ ucf_flags |= ucf_flags_from_smb_request(req);
+
switch (create_disposition) {
case FILE_OPEN:
case FILE_OVERWRITE:
@@ -417,6 +434,7 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
bool allow_wcard_last_component =
(ucf_flags & UCF_ALWAYS_ALLOW_WCARD_LCOMP);
bool save_last_component = ucf_flags & UCF_SAVE_LCOMP;
+ bool snapshot_path = (ucf_flags & UCF_GMT_PATHNAME);
NTSTATUS status;
int ret = -1;
@@ -499,7 +517,7 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
}
/* Canonicalize any @GMT- paths. */
- if (posix_pathnames == false) {
+ if (snapshot_path) {
status = canonicalize_snapshot_path(smb_fname);
if (!NT_STATUS_IS_OK(status)) {
goto err;
@@ -1521,7 +1539,6 @@ static NTSTATUS build_stream_path(TALLOC_CTX *mem_ctx,
*
* @param ctx talloc_ctx to allocate memory with.
* @param conn connection struct for vfs calls.
- * @param dfs_path Whether this path requires dfs resolution.
* @param smbreq SMB request if we're using privileges.
* @param name_in The unconverted name.
* @param ucf_flags flags to pass through to unix_convert().
@@ -1538,7 +1555,6 @@ static NTSTATUS build_stream_path(TALLOC_CTX *mem_ctx,
*/
static NTSTATUS filename_convert_internal(TALLOC_CTX *ctx,
connection_struct *conn,
- bool dfs_path,
struct smb_request *smbreq,
const char *name_in,
uint32_t ucf_flags,
@@ -1546,23 +1562,30 @@ static NTSTATUS filename_convert_internal(TALLOC_CTX *ctx,
struct smb_filename **pp_smb_fname)
{
NTSTATUS status;
- char *fname = NULL;
*pp_smb_fname = NULL;
- status = resolve_dfspath_wcard(ctx, conn,
- dfs_path,
+ if (ucf_flags & UCF_DFS_PATHNAME) {
+ bool path_contains_wcard = false;
+ char *fname = NULL;
+ status = resolve_dfspath_wcard(ctx, conn,
name_in,
ucf_flags,
!conn->sconn->using_smb2,
&fname,
- ppath_contains_wcard);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10,("filename_convert_internal: resolve_dfspath failed "
- "for name %s with %s\n",
- name_in,
- nt_errstr(status) ));
- return status;
+ &path_contains_wcard);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(10,("filename_convert_internal: resolve_dfspath "
+ "failed for name %s with %s\n",
+ name_in,
+ nt_errstr(status) ));
+ return status;
+ }
+ name_in = fname;
+ if (ppath_contains_wcard != NULL && path_contains_wcard) {
+ *ppath_contains_wcard = path_contains_wcard;
+ }
+ ucf_flags &= ~UCF_DFS_PATHNAME;
}
if (is_fake_file_path(name_in)) {
@@ -1588,11 +1611,11 @@ static NTSTATUS filename_convert_internal(TALLOC_CTX *ctx,
ucf_flags |= UCF_ALWAYS_ALLOW_WCARD_LCOMP;
}
- status = unix_convert(ctx, conn, fname, pp_smb_fname, ucf_flags);
+ status = unix_convert(ctx, conn, name_in, pp_smb_fname, ucf_flags);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(10,("filename_convert_internal: unix_convert failed "
"for name %s with %s\n",
- fname,
+ name_in,
nt_errstr(status) ));
return status;
}
@@ -1627,7 +1650,6 @@ static NTSTATUS filename_convert_internal(TALLOC_CTX *ctx,
NTSTATUS filename_convert(TALLOC_CTX *ctx,
connection_struct *conn,
- bool dfs_path,
const char *name_in,
uint32_t ucf_flags,
bool *ppath_contains_wcard,
@@ -1635,7 +1657,6 @@ NTSTATUS filename_convert(TALLOC_CTX *ctx,
{
return filename_convert_internal(ctx,
conn,
- dfs_path,
NULL,
name_in,
ucf_flags,
@@ -1658,7 +1679,6 @@ NTSTATUS filename_convert_with_privilege(TALLOC_CTX *ctx,
{
return filename_convert_internal(ctx,
conn,
- smbreq->flags2 & FLAGS2_DFS_PATHNAMES,
smbreq,
name_in,
ucf_flags,
diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c
index 61538ce..c22cd1e 100644
--- a/source3/smbd/msdfs.c
+++ b/source3/smbd/msdfs.c
@@ -1669,35 +1669,27 @@ struct junction_map *enum_msdfs_links(TALLOC_CTX *ctx, size_t *p_num_jn)
NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
connection_struct *conn,
- bool dfs_pathnames,
const char *name_in,
uint32_t ucf_flags,
bool allow_broken_path,
char **pp_name_out,
bool *ppath_contains_wcard)
{
- bool path_contains_wcard;
+ bool path_contains_wcard = false;
NTSTATUS status = NT_STATUS_OK;
- if (dfs_pathnames) {
- status = dfs_redirect(ctx,
- conn,
- name_in,
- ucf_flags,
- allow_broken_path,
- pp_name_out,
- &path_contains_wcard);
-
- if (NT_STATUS_IS_OK(status) && ppath_contains_wcard != NULL) {
- *ppath_contains_wcard = path_contains_wcard;
- }
- } else {
- /*
- * Cheat and just return a copy of the in ptr.
- * Once srvstr_get_path() uses talloc it'll
- * be a talloced ptr anyway.
- */
- *pp_name_out = discard_const_p(char, name_in);
+ status = dfs_redirect(ctx,
+ conn,
+ name_in,
+ ucf_flags,
+ allow_broken_path,
+ pp_name_out,
+ &path_contains_wcard);
+
+ if (NT_STATUS_IS_OK(status) &&
+ ppath_contains_wcard != NULL &&
+ path_contains_wcard) {
+ *ppath_contains_wcard = path_contains_wcard;
}
return status;
}
diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
index a5fc625..7b7f205 100644
--- a/source3/smbd/nttrans.c
+++ b/source3/smbd/nttrans.c
@@ -538,7 +538,6 @@ void reply_ntcreate_and_X(struct smb_request *req)
ucf_flags = filename_create_ucf_flags(req, create_disposition);
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
fname,
ucf_flags,
NULL,
@@ -1111,7 +1110,6 @@ static void call_nt_transact_create(connection_struct *conn,
ucf_flags = filename_create_ucf_flags(req, create_disposition);
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
fname,
ucf_flags,
NULL,
@@ -1573,8 +1571,8 @@ void reply_ntrename(struct smb_request *req)
bool src_has_wcard = False;
bool dest_has_wcard = False;
uint32_t attrs;
- uint32_t ucf_flags_src = (req->posix_pathnames ? UCF_POSIX_PATHNAMES : 0);
- uint32_t ucf_flags_dst = (req->posix_pathnames ? UCF_POSIX_PATHNAMES : 0);
+ uint32_t ucf_flags_src = ucf_flags_from_smb_request(req);
+ uint32_t ucf_flags_dst = ucf_flags_from_smb_request(req);
uint16_t rename_type;
TALLOC_CTX *ctx = talloc_tos();
bool stream_rename = false;
@@ -1627,13 +1625,12 @@ void reply_ntrename(struct smb_request *req)
* destination's last component.
*/
if (rename_type == RENAME_FLAG_RENAME) {
- ucf_flags_src = UCF_COND_ALLOW_WCARD_LCOMP;
- ucf_flags_dst = UCF_COND_ALLOW_WCARD_LCOMP | UCF_SAVE_LCOMP;
+ ucf_flags_src |= UCF_COND_ALLOW_WCARD_LCOMP;
+ ucf_flags_dst |= UCF_COND_ALLOW_WCARD_LCOMP | UCF_SAVE_LCOMP;
}
/* rename_internals() calls unix_convert(), so don't call it here. */
status = filename_convert(ctx, conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
oldname,
ucf_flags_src,
NULL,
@@ -1651,7 +1648,6 @@ void reply_ntrename(struct smb_request *req)
}
status = filename_convert(ctx, conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
newname,
ucf_flags_dst,
&dest_has_wcard,
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 50f8a5e..49932e9 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -5366,8 +5366,7 @@ NTSTATUS get_relative_fid_filename(connection_struct *conn,
files_struct *dir_fsp;
char *parent_fname = NULL;
char *new_base_name = NULL;
- uint32_t ucf_flags = ((req != NULL && req->posix_pathnames) ?
- UCF_POSIX_PATHNAMES : 0);
+ uint32_t ucf_flags = ucf_flags_from_smb_request(req);
NTSTATUS status;
if (root_dir_fid == 0 || !smb_fname) {
@@ -5460,7 +5459,6 @@ NTSTATUS get_relative_fid_filename(connection_struct *conn,
status = filename_convert(req,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
new_base_name,
ucf_flags,
NULL,
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index 19abf7e..0be2a49 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -338,6 +338,7 @@ int fsp_stat(files_struct *fsp);
/* The following definitions come from smbd/filename.c */
+uint32_t ucf_flags_from_smb_request(struct smb_request *req);
uint32_t filename_create_ucf_flags(struct smb_request *req, uint32_t create_disposition);
NTSTATUS unix_convert(TALLOC_CTX *ctx,
connection_struct *conn,
@@ -350,7 +351,6 @@ int get_real_filename(connection_struct *conn, const char *path,
char **found_name);
NTSTATUS filename_convert(TALLOC_CTX *mem_ctx,
connection_struct *conn,
- bool dfs_path,
const char *name_in,
uint32_t ucf_flags,
bool *ppath_contains_wcard,
@@ -490,7 +490,6 @@ bool remove_msdfs_link(const struct junction_map *jucn);
struct junction_map *enum_msdfs_links(TALLOC_CTX *ctx, size_t *p_num_jn);
NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
connection_struct *conn,
- bool dfs_pathnames,
const char *name_in,
uint32_t ucf_flags,
bool allow_broken_path,
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 030f011..e6fabad 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -1278,7 +1278,7 @@ void reply_checkpath(struct smb_request *req)
struct smb_filename *smb_fname = NULL;
char *name = NULL;
NTSTATUS status;
- uint32_t ucf_flags = (req->posix_pathnames ? UCF_POSIX_PATHNAMES : 0);
+ uint32_t ucf_flags = ucf_flags_from_smb_request(req);
TALLOC_CTX *ctx = talloc_tos();
START_PROFILE(SMBcheckpath);
@@ -1297,7 +1297,6 @@ void reply_checkpath(struct smb_request *req)
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
name,
ucf_flags,
NULL,
@@ -1393,11 +1392,9 @@ void reply_getatr(struct smb_request *req)
size = 0;
mtime = 0;
} else {
- uint32_t ucf_flags = (req->posix_pathnames ?
- UCF_POSIX_PATHNAMES : 0);
+ uint32_t ucf_flags = ucf_flags_from_smb_request(req);
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
fname,
ucf_flags,
NULL,
@@ -1480,7 +1477,7 @@ void reply_setatr(struct smb_request *req)
time_t mtime;
const char *p;
NTSTATUS status;
- uint32_t ucf_flags = (req->posix_pathnames ? UCF_POSIX_PATHNAMES : 0);
+ uint32_t ucf_flags = ucf_flags_from_smb_request(req);
TALLOC_CTX *ctx = talloc_tos();
START_PROFILE(SMBsetatr);
@@ -1501,7 +1498,6 @@ void reply_setatr(struct smb_request *req)
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
fname,
ucf_flags,
NULL,
@@ -1798,9 +1794,8 @@ void reply_search(struct smb_request *req)
if (status_len == 0) {
struct smb_filename *smb_dname = NULL;
uint32_t ucf_flags = UCF_ALWAYS_ALLOW_WCARD_LCOMP |
- (req->posix_pathnames ? UCF_POSIX_PATHNAMES : 0);
+ ucf_flags_from_smb_request(req);
nt_status = filename_convert(ctx, conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
path,
ucf_flags,
&mask_contains_wcard,
@@ -2146,7 +2141,6 @@ void reply_open(struct smb_request *req)
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
fname,
ucf_flags,
NULL,
@@ -2319,7 +2313,6 @@ void reply_open_and_X(struct smb_request *req)
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
fname,
ucf_flags,
NULL,
@@ -2564,7 +2557,6 @@ void reply_mknew(struct smb_request *req)
ucf_flags = filename_create_ucf_flags(req, create_disposition);
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
fname,
ucf_flags,
NULL,
@@ -2701,7 +2693,6 @@ void reply_ctemp(struct smb_request *req)
ucf_flags = filename_create_ucf_flags(req, FILE_CREATE);
status = filename_convert(ctx, conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
fname,
ucf_flags,
NULL,
@@ -3220,7 +3211,7 @@ void reply_unlink(struct smb_request *req)
NTSTATUS status;
bool path_contains_wcard = False;
uint32_t ucf_flags = UCF_COND_ALLOW_WCARD_LCOMP |
- (req->posix_pathnames ? UCF_POSIX_PATHNAMES : 0);
+ ucf_flags_from_smb_request(req);
TALLOC_CTX *ctx = talloc_tos();
START_PROFILE(SMBunlink);
@@ -3241,7 +3232,6 @@ void reply_unlink(struct smb_request *req)
}
status = filename_convert(ctx, conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
name,
ucf_flags,
&path_contains_wcard,
@@ -6152,7 +6142,6 @@ void reply_mkdir(struct smb_request *req)
ucf_flags = filename_create_ucf_flags(req, FILE_CREATE);
status = filename_convert(ctx, conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
directory,
ucf_flags,
NULL,
@@ -6210,7 +6199,7 @@ void reply_rmdir(struct smb_request *req)
TALLOC_CTX *ctx = talloc_tos();
files_struct *fsp = NULL;
int info = 0;
- uint32_t ucf_flags = (req->posix_pathnames ? UCF_POSIX_PATHNAMES : 0);
+ uint32_t ucf_flags = ucf_flags_from_smb_request(req);
struct smbd_server_connection *sconn = req->sconn;
START_PROFILE(SMBrmdir);
@@ -6223,7 +6212,6 @@ void reply_rmdir(struct smb_request *req)
}
status = filename_convert(ctx, conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
directory,
ucf_flags,
NULL,
@@ -7294,12 +7282,15 @@ void reply_mv(struct smb_request *req)
TALLOC_CTX *ctx = talloc_tos();
struct smb_filename *smb_fname_src = NULL;
struct smb_filename *smb_fname_dst = NULL;
- uint32_t src_ucf_flags = (req->posix_pathnames ?
- (UCF_UNIX_NAME_LOOKUP|UCF_POSIX_PATHNAMES) :
- UCF_COND_ALLOW_WCARD_LCOMP);
- uint32_t dst_ucf_flags = UCF_SAVE_LCOMP |
- (req->posix_pathnames ? UCF_POSIX_PATHNAMES :
- UCF_COND_ALLOW_WCARD_LCOMP);
+ uint32_t src_ucf_flags = ucf_flags_from_smb_request(req) |
+ (req->posix_pathnames ?
+ UCF_UNIX_NAME_LOOKUP :
+ UCF_COND_ALLOW_WCARD_LCOMP);
+ uint32_t dst_ucf_flags = ucf_flags_from_smb_request(req) |
+ UCF_SAVE_LCOMP |
+ (req->posix_pathnames ?
+ 0 :
+ UCF_COND_ALLOW_WCARD_LCOMP);
bool stream_rename = false;
START_PROFILE(SMBmv);
@@ -7340,7 +7331,6 @@ void reply_mv(struct smb_request *req)
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
name,
src_ucf_flags,
&src_has_wcard,
@@ -7358,7 +7348,6 @@ void reply_mv(struct smb_request *req)
status = filename_convert(ctx,
conn,
- req->flags2 & FLAGS2_DFS_PATHNAMES,
--
Samba Shared Repository
More information about the samba-cvs
mailing list