From: Stefan Metzmacher Date: Fri, 26 Aug 2022 09:17:51 +0000 (+0200) Subject: s3:locking: let get_share_mode_write_time() use share_mode_lock_access_private_data() X-Git-Tag: talloc-2.4.0~883 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=faf9388e96028bb499f0ec9e34d5bb12ad26a0e8;p=thirdparty%2Fsamba.git s3:locking: let get_share_mode_write_time() use share_mode_lock_access_private_data() 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 Reviewed-by: Jeremy Allison --- diff --git a/source3/locking/locking.c b/source3/locking/locking.c index eb7b8f6c23c..cf96d9bb13a 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -1130,7 +1130,22 @@ bool set_write_time(struct file_id fileid, struct timespec write_time) struct timespec get_share_mode_write_time(struct share_mode_lock *lck) { - struct share_mode_data *d = lck->data; + struct share_mode_data *d = NULL; + NTSTATUS status; + + status = share_mode_lock_access_private_data(lck, &d); + if (!NT_STATUS_IS_OK(status)) { + struct file_id id = share_mode_lock_file_id(lck); + struct file_id_buf id_buf; + struct timespec ts_zero = {}; + /* Any error recovery possible here ? */ + DBG_ERR("share_mode_lock_access_private_data() failed for " + "%s - %s\n", + file_id_str_buf(id, &id_buf), + nt_errstr(status)); + smb_panic(__location__); + return ts_zero; + } if (!null_nttime(d->changed_write_time)) { return nt_time_to_full_timespec(d->changed_write_time);