Fix bug 5889. "delete veto files = no" seems to break.
authorJeremy Allison <jra@samba.org>
Tue, 11 Nov 2008 22:20:53 +0000 (14:20 -0800)
committerJeremy Allison <jra@samba.org>
Tue, 11 Nov 2008 22:20:53 +0000 (14:20 -0800)
Jeremy.

source/smbd/reply.c

index 2d271ab59c4f98f8df5d5076adfe7edfb2939de9..7aeefea98baee16a3d36da81869783808e967c7e 100644 (file)
@@ -5046,8 +5046,16 @@ NTSTATUS rmdir_internals(TALLOC_CTX *ctx,
                        }
                }
 
-               /* We only have veto files/directories. Recursive delete. */
+               /* We only have veto files/directories.
+                * Are we allowed to delete them ? */
 
+               if(!lp_recursive_veto_delete(SNUM(conn))) {
+                       TALLOC_FREE(dir_hnd);
+                       errno = ENOTEMPTY;
+                       goto err;
+               }
+
+               /* Do a recursive delete. */
                RewindDir(dir_hnd,&dirpos);
                while ((dname = ReadDirName(dir_hnd,&dirpos))) {
                        char *fullname = NULL;
@@ -5073,9 +5081,8 @@ NTSTATUS rmdir_internals(TALLOC_CTX *ctx,
                                break;
                        }
                        if(st.st_mode & S_IFDIR) {
-                               if(lp_recursive_veto_delete(SNUM(conn))) {
-                                       if(!recursive_rmdir(ctx, conn, fullname))
-                                               break;
+                               if(!recursive_rmdir(ctx, conn, fullname)) {
+                                       break;
                                }
                                if(SMB_VFS_RMDIR(conn,fullname) != 0) {
                                        break;