From: Andreas Schneider Date: Wed, 18 Dec 2019 12:27:26 +0000 (+0100) Subject: s3:libsmb: Generate the inode only based on the path component X-Git-Tag: ldb-2.1.0~218 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea51a426e506bd6456814ecddcb63441859f9d89;p=thirdparty%2Fsamba.git s3:libsmb: Generate the inode only based on the path component Currently we use the full smb url which includes also username and password. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14101 Signed-off-by: Andreas Schneider Reviewed-by: Jeremy Allison --- diff --git a/source3/libsmb/libsmb_dir.c b/source3/libsmb/libsmb_dir.c index 8eecde0668e..22a3c6354e6 100644 --- a/source3/libsmb/libsmb_dir.c +++ b/source3/libsmb/libsmb_dir.c @@ -1276,6 +1276,15 @@ const struct libsmb_file_info *SMBC_readdirplus2_ctx(SMBCCTX *context, struct smbc_dirplus_list *dp_list = NULL; ino_t ino; char *full_pathname = NULL; + char *workgroup = NULL; + char *server = NULL; + uint16_t port = 0; + char *share = NULL; + char *path = NULL; + char *user = NULL; + char *password = NULL; + char *options = NULL; + int rc; TALLOC_CTX *frame = NULL; /* @@ -1333,8 +1342,25 @@ const struct libsmb_file_info *SMBC_readdirplus2_ctx(SMBCCTX *context, return NULL; } + rc = SMBC_parse_path(frame, + context, + full_pathname, + &workgroup, + &server, + &port, + &share, + &path, + &user, + &password, + &options); + if (rc != 0) { + TALLOC_FREE(frame); + errno = ENOENT; + return NULL; + } + setup_stat(st, - full_pathname, + path, smb_finfo->size, smb_finfo->attrs, ino, diff --git a/source3/libsmb/libsmb_stat.c b/source3/libsmb/libsmb_stat.c index 0db9be3677b..03db33e8173 100644 --- a/source3/libsmb/libsmb_stat.c +++ b/source3/libsmb/libsmb_stat.c @@ -190,7 +190,7 @@ SMBC_stat_ctx(SMBCCTX *context, } setup_stat(st, - fname, + path, size, mode, ino, @@ -296,7 +296,7 @@ SMBC_fstat_ctx(SMBCCTX *context, } setup_stat(st, - file->fname, + path, size, mode, ino,