]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:rpc_server/srvsvc: use brl_get_locks_readonly() instead of brl_get_locks()
authorRalph Boehme <slow@samba.org>
Tue, 28 Jan 2025 13:48:39 +0000 (14:48 +0100)
committerJule Anger <janger@samba.org>
Thu, 17 Apr 2025 11:31:14 +0000 (11:31 +0000)
No need to keep the record locked longer then needed.

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

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit c36cc2b6720a2cfe54ce52a500dc499418e27e34)

source3/rpc_server/srvsvc/srv_srvsvc_nt.c

index 9006b81805dd91fcdd0ec96a5c61eda16b78e4aa..8bc4328862a4cbf9431c78067c9f85b4151bd682 100644 (file)
@@ -192,17 +192,23 @@ static WERROR net_enum_files(TALLOC_CTX *ctx,
        /* need to count the number of locks on a file */
 
        for (i=0; i<(*ctr3)->count; i++) {
-               struct files_struct fsp = { .file_id = f_enum_cnt.fids[i], };
+               struct files_struct *fsp = NULL;
                struct byte_range_lock *brl = NULL;
 
-               brl = brl_get_locks(ctx, &fsp);
+               fsp = talloc_zero(talloc_tos(), struct files_struct);
+               if (fsp == NULL) {
+                       return WERR_NOT_ENOUGH_MEMORY;
+               }
+               fsp->file_id = f_enum_cnt.fids[i];
+
+               brl = brl_get_locks_readonly(fsp);
                if (brl == NULL) {
                        continue;
                }
 
                (*ctr3)->array[i].num_locks = brl_num_locks(brl);
-
                TALLOC_FREE(brl);
+               TALLOC_FREE(fsp);
        }
 
        return WERR_OK;