diff options
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/oplock.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c index 6739d29470..234b62e8ae 100644 --- a/source3/smbd/oplock.c +++ b/source3/smbd/oplock.c @@ -684,6 +684,11 @@ void release_level_2_oplocks_on_change(files_struct *fsp) don't have to do anything */ for (i=0; i<lck->num_share_modes; i++) { struct share_mode_entry *e = &lck->share_modes[i]; + + if (!is_valid_share_mode_entry(e)) { + continue; + } + if ((e->op_type == NO_OPLOCK) && (e->share_file_id == fsp->file_id) && (e->dev == fsp->dev) && @@ -701,6 +706,10 @@ void release_level_2_oplocks_on_change(files_struct *fsp) struct share_mode_entry *share_entry = &lck->share_modes[i]; char msg[MSG_SMB_SHARE_MODE_ENTRY_SIZE]; + if (!is_valid_share_mode_entry(share_entry)) { + continue; + } + /* * As there could have been multiple writes waiting at the * lock_share_entry gate we may not be the first to |