]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: use parent_smb_fname() in unix_convert()
authorRalph Boehme <slow@samba.org>
Tue, 28 Apr 2020 14:00:42 +0000 (16:00 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 29 Apr 2020 16:39:39 +0000 (16:39 +0000)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/filename.c

index 2c66a80a9c7b68ba7a2d7b04ac62fce8f126ebd2..a9ccac39956c2bfeeb26058dd08ea9a295ed521c 100644 (file)
@@ -1193,21 +1193,26 @@ NTSTATUS unix_convert(TALLOC_CTX *mem_ctx,
                                 * Was it a missing last component ?
                                 * or a missing intermediate component ?
                                 */
-                               struct smb_filename parent_fname;
-                               const char *last_component = NULL;
-
-                               ZERO_STRUCT(parent_fname);
-                               if (!parent_dirname(state->mem_ctx, state->smb_fname->base_name,
-                                                       &parent_fname.base_name,
-                                                       &last_component)) {
+                               struct smb_filename *parent_fname = NULL;
+                               struct smb_filename *base_fname = NULL;
+                               bool ok;
+
+                               ok = parent_smb_fname(state->mem_ctx,
+                                                     state->smb_fname,
+                                                     &parent_fname,
+                                                     &base_fname);
+                               if (!ok) {
                                        status = NT_STATUS_NO_MEMORY;
                                        goto fail;
                                }
                                if (state->posix_pathnames) {
-                                       ret = SMB_VFS_LSTAT(state->conn, &parent_fname);
+                                       ret = SMB_VFS_LSTAT(state->conn,
+                                                           parent_fname);
                                } else {
-                                       ret = SMB_VFS_STAT(state->conn, &parent_fname);
+                                       ret = SMB_VFS_STAT(state->conn,
+                                                          parent_fname);
                                }
+                               TALLOC_FREE(parent_fname);
                                if (ret == -1) {
                                        if (errno == ENOTDIR ||
                                                        errno == ENOENT ||