From: Stefan Metzmacher Date: Fri, 26 Aug 2022 08:24:52 +0000 (+0200) Subject: s3:locking: make use of share_mode_lock_access_private_data() in rename_share_filename() X-Git-Tag: talloc-2.4.0~892 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=357adc2f27e3efaeb4c38d84de06176175b6c39b;p=thirdparty%2Fsamba.git s3:locking: make use of share_mode_lock_access_private_data() in rename_share_filename() BUG: https://bugzilla.samba.org/show_bug.cgi?id=15125 Signed-off-by: Stefan Metzmacher Reviewed-by: Jeremy Allison --- diff --git a/source3/locking/locking.c b/source3/locking/locking.c index c99e4cada60..d8367aa7d8c 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -570,7 +570,6 @@ bool rename_share_filename(struct messaging_context *msg_ctx, const struct smb_filename *smb_fname_dst) { struct rename_share_filename_state state = { - .data = lck->data, .msg_ctx = msg_ctx, .self = messaging_server_id(msg_ctx), .orig_name_hash = orig_name_hash, @@ -580,12 +579,24 @@ bool rename_share_filename(struct messaging_context *msg_ctx, .msg.base_name = smb_fname_dst->base_name, .msg.stream_name = smb_fname_dst->stream_name, }; - struct share_mode_data *d = lck->data; + struct share_mode_data *d = NULL; + NTSTATUS status; bool ok; DEBUG(10, ("rename_share_filename: servicepath %s newname %s\n", servicepath, smb_fname_dst->base_name)); + 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 " + "servicepath %s newname %s - %s\n", + servicepath, smb_fname_dst->base_name, + nt_errstr(status)); + return false; + } + state.data = d; + /* * rename_internal_fsp() and rename_internals() add './' to * head of newname if newname does not contain a '/'.