s3: smbd: Prevent valgrind errors in smbtorture3 POSIX test.
authorJeremy Allison <jra@samba.org>
Thu, 27 Sep 2018 21:12:47 +0000 (14:12 -0700)
committerKarolin Seeger <kseeger@samba.org>
Tue, 9 Oct 2018 15:20:21 +0000 (17:20 +0200)
Missing fsp talloc free and linked list delete in error
paths in close_directory(). Now matches close_normal_file()
and close_fake_file().

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

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Sat Sep 29 05:32:41 CEST 2018 on sn-devel-144

(cherry picked from commit 660dbfaeff493359474ebdb36098ac49b3f7ba0c)

Autobuild-User(v4-7-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-7-test): Tue Oct  9 17:20:22 CEST 2018 on sn-devel-144

source3/smbd/close.c

index 095feecf204949ec0571eee7d9e67b14afe74f2e..9c9217b177ae385da2757d9c013aefcf7080fd53 100644 (file)
@@ -1081,6 +1081,8 @@ static NTSTATUS close_directory(struct smb_request *req, files_struct *fsp,
        if (lck == NULL) {
                DEBUG(0, ("close_directory: Could not get share mode lock for "
                          "%s\n", fsp_str_dbg(fsp)));
+               close_filestruct(fsp);
+               file_free(req, fsp);
                return NT_STATUS_INVALID_PARAMETER;
        }
 
@@ -1164,6 +1166,8 @@ static NTSTATUS close_directory(struct smb_request *req, files_struct *fsp,
                        if (!NT_STATUS_IS_OK(status)) {
                                DEBUG(5, ("delete_all_streams failed: %s\n",
                                          nt_errstr(status)));
+                               close_filestruct(fsp);
+                               file_free(req, fsp);
                                return status;
                        }
                }