]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:locking: let reset_delete_on_close_lck() use share_mode_lock_access_private_data()
authorStefan Metzmacher <metze@samba.org>
Fri, 26 Aug 2022 09:17:51 +0000 (11:17 +0200)
committerJeremy Allison <jra@samba.org>
Tue, 20 Sep 2022 00:34:35 +0000 (00:34 +0000)
We should avoid dereference 'struct share_mode_lock' as much as possible.

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

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/locking/locking.c

index 4c20ff2c3541e7a549eb3efa77ec16141baf7562..42880f7ce1ce6838e88015a33f8511163b187490 100644 (file)
@@ -808,9 +808,19 @@ static bool add_delete_on_close_token(struct share_mode_data *d,
 void reset_delete_on_close_lck(files_struct *fsp,
                               struct share_mode_lock *lck)
 {
-       struct share_mode_data *d = lck->data;
+       struct share_mode_data *d = NULL;
+       NTSTATUS status;
        uint32_t i;
 
+       status = share_mode_lock_access_private_data(lck, &d);
+       if (!NT_STATUS_IS_OK(status)) {
+               /* Any error recovery possible here ? */
+               DBG_ERR("share_mode_lock_access_private_data() failed for "
+                       "%s - %s\n", fsp_str_dbg(fsp), nt_errstr(status));
+               smb_panic(__location__);
+               return;
+       }
+
        for (i=0; i<d->num_delete_tokens; i++) {
                struct delete_token *dt = &d->delete_tokens[i];