]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: smbd: dirfsp is being used uninitialized inside rmdir_internals().
authorJeremy Allison <jra@samba.org>
Tue, 2 Nov 2021 17:44:44 +0000 (10:44 -0700)
committerRalph Boehme <slow@samba.org>
Wed, 3 Nov 2021 14:33:49 +0000 (14:33 +0000)
Not caught be the tests in bugs 14878, 14879 as can_delete_directory_fsp()
doesn't have the same bug.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14892

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Nov  3 14:33:49 UTC 2021 on sn-devel-184

source3/smbd/close.c

index eae276b2e9c5d21211389023b2e34a31123fd655..ad10215a4fa294cbf477708260310cab665fb931 100644 (file)
@@ -1052,6 +1052,8 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, struct files_struct *fsp)
                goto err;
        }
 
+       dirfsp = dir_hnd_fetch_fsp(dir_hnd);
+
        while ((dname = ReadDirName(dir_hnd, &dirpos, &st, &talloced)) != NULL) {
                struct smb_filename *smb_dname_full = NULL;
                struct smb_filename *direntry_fname = NULL;
@@ -1200,7 +1202,6 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, struct files_struct *fsp)
 
        /* Do a recursive delete. */
        RewindDir(dir_hnd,&dirpos);
-       dirfsp = dir_hnd_fetch_fsp(dir_hnd);
 
        while ((dname = ReadDirName(dir_hnd, &dirpos, &st, &talloced)) != NULL) {
                struct smb_filename *direntry_fname = NULL;