summaryrefslogtreecommitdiff
path: root/source3/smbd/oplock.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-08-17 22:59:53 +0000
committerJeremy Allison <jra@samba.org>1998-08-17 22:59:53 +0000
commitb935fc086285e73203e5f3af80041489e893ee1a (patch)
tree351e308d10126cc89dceead9a38de9d2c59d02b2 /source3/smbd/oplock.c
parent28788ca46c06d00a472949fd3de7b64988925283 (diff)
downloadsamba-b935fc086285e73203e5f3af80041489e893ee1a.tar.gz
samba-b935fc086285e73203e5f3af80041489e893ee1a.tar.bz2
samba-b935fc086285e73203e5f3af80041489e893ee1a.zip
Fixed bug introduced by the recent changes where the chain_fnum
could be overwritten in oplock processing code. Jeremy. (This used to be commit 908a583b48e37c5e869216f4dc92d4a587ff1238)
Diffstat (limited to 'source3/smbd/oplock.c')
-rw-r--r--source3/smbd/oplock.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c
index d47435a0ec..d9df308a35 100644
--- a/source3/smbd/oplock.c
+++ b/source3/smbd/oplock.c
@@ -329,6 +329,8 @@ BOOL oplock_break(uint32 dev, uint32 inode, struct timeval *tval)
saved_vuid = current_user.vuid;
GetWd(saved_dir);
unbecome_user();
+ /* Save the chain fnum. */
+ file_chain_save();
while(OPEN_FSP(fsp) && fsp->granted_oplock)
{
@@ -398,6 +400,9 @@ BOOL oplock_break(uint32 dev, uint32 inode, struct timeval *tval)
/* Including the directory. */
ChDir(saved_dir);
+ /* Restore the chain fnum. */
+ file_chain_restore();
+
/* Free the buffers we've been using to recurse. */
free(inbuf);
free(outbuf);