From: Ralph Boehme Date: Tue, 28 Jan 2025 13:48:39 +0000 (+0100) Subject: s3:rpc_server/srvsvc: use brl_get_locks_readonly() instead of brl_get_locks() X-Git-Tag: samba-4.22.1~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=185e134c913e55bbffccf2bfa47d7aa65c5d12ed;p=thirdparty%2Fsamba.git s3:rpc_server/srvsvc: use brl_get_locks_readonly() instead of brl_get_locks() 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 Reviewed-by: Stefan Metzmacher (cherry picked from commit c36cc2b6720a2cfe54ce52a500dc499418e27e34) --- diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c index 9006b81805d..8bc4328862a 100644 --- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c @@ -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;