]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: simplify recursive_rmdir()
authorRalph Boehme <slow@samba.org>
Fri, 22 Jan 2021 11:00:56 +0000 (12:00 +0100)
committerJeremy Allison <jra@samba.org>
Thu, 28 Jan 2021 08:11:49 +0000 (08:11 +0000)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/close.c

index ef9cca4e9aa850e180ca538441258f9d791e2225..7a376d84b467f93dda6b5fac0191bf1432dcb79e 100644 (file)
@@ -866,6 +866,7 @@ bool recursive_rmdir(TALLOC_CTX *ctx,
                struct smb_filename *smb_dname_full = NULL;
                char *fullname = NULL;
                bool do_break = true;
+               int unlink_flags = 0;
 
                if (ISDOT(dname) || ISDOTDOT(dname)) {
                        TALLOC_FREE(talloced);
@@ -910,21 +911,14 @@ bool recursive_rmdir(TALLOC_CTX *ctx,
                        if(!recursive_rmdir(ctx, conn, smb_dname_full)) {
                                goto err_break;
                        }
-                       retval = SMB_VFS_UNLINKAT(conn,
-                                       conn->cwd_fsp,
-                                       smb_dname_full,
-                                       AT_REMOVEDIR);
-                       if (retval != 0) {
-                               goto err_break;
-                       }
-               } else {
-                       retval = SMB_VFS_UNLINKAT(conn,
-                                       conn->cwd_fsp,
-                                       smb_dname_full,
-                                       0);
-                       if (retval != 0) {
-                               goto err_break;
-                       }
+                       unlink_flags = AT_REMOVEDIR;
+               }
+               retval = SMB_VFS_UNLINKAT(conn,
+                                         conn->cwd_fsp,
+                                         smb_dname_full,
+                                         unlink_flags);
+               if (retval != 0) {
+                       goto err_break;
                }
 
                /* Successful iteration. */