Fix bug #9571 - Unlink after open causes smbd to panic.
authorPavel Shilovsky <piastry@etersoft.ru>
Wed, 16 Jan 2013 11:02:26 +0000 (15:02 +0400)
committerStefan Metzmacher <metze@samba.org>
Mon, 28 Jan 2013 12:49:34 +0000 (13:49 +0100)
s3:smbd: fix wrong lock order in posix unlink

Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
Reviewed-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/smbd/trans2.c

index 9c77f4d3f988d263212a57d3c94a573aa808a0ef..92d047ae5d632d9477bfa8c496ddb9899064e5c1 100644 (file)
@@ -7663,8 +7663,8 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
                                continue;
                        }
                        /* Fail with sharing violation. */
-                       close_file(req, fsp, NORMAL_CLOSE);
                        TALLOC_FREE(lck);
+                       close_file(req, fsp, NORMAL_CLOSE);
                        return NT_STATUS_SHARING_VIOLATION;
                }
        }
@@ -7678,12 +7678,12 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
                                                fsp,
                                                smb_fname);
 
+       TALLOC_FREE(lck);
+
        if (!NT_STATUS_IS_OK(status)) {
                close_file(req, fsp, NORMAL_CLOSE);
-               TALLOC_FREE(lck);
                return status;
        }
-       TALLOC_FREE(lck);
        return close_file(req, fsp, NORMAL_CLOSE);
 }