From: Andrew Tridgell Date: Mon, 2 Jun 2008 23:36:02 +0000 (+1000) Subject: it is not valid to set a UNLOCK flag on a lock request X-Git-Tag: samba-4.0.0alpha5~85 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=63f315572969e7fc52bdc7c0b38eaaee736d5e2a;p=thirdparty%2Fsamba.git it is not valid to set a UNLOCK flag on a lock request --- diff --git a/source/ntvfs/ntvfs_generic.c b/source/ntvfs/ntvfs_generic.c index a3a8fcb1f42..4f3a7e21983 100644 --- a/source/ntvfs/ntvfs_generic.c +++ b/source/ntvfs/ntvfs_generic.c @@ -1067,9 +1067,13 @@ NTSTATUS ntvfs_map_lock(struct ntvfs_module_context *ntvfs, (SMB2_LOCK_FLAG_SHARED|SMB2_LOCK_FLAG_EXCLUSIVE))) { return NT_STATUS_INVALID_PARAMETER; } - lck2->generic.in.locks[i].pid = req->smbpid; + if (!isunlock && + (lck->smb2.in.locks[i].flags & SMB2_LOCK_FLAG_UNLOCK)) { + return NT_STATUS_INVALID_PARAMETER; + } + lck2->generic.in.locks[i].pid = req->smbpid; lck2->generic.in.locks[i].offset = lck->smb2.in.locks[i].offset; - lck2->generic.in.locks[i].count = lck->smb2.in.locks[i].length; + lck2->generic.in.locks[i].count = lck->smb2.in.locks[i].length; if (!(lck->smb2.in.locks[i].flags & SMB2_LOCK_FLAG_EXCLUSIVE)) { lck2->generic.in.mode = LOCKING_ANDX_SHARED_LOCK; }