svn commit: samba r13966 - in trunk/source/smbd: .
jra at samba.org
jra at samba.org
Tue Mar 7 17:02:51 GMT 2006
Author: jra
Date: 2006-03-07 17:02:50 +0000 (Tue, 07 Mar 2006)
New Revision: 13966
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13966
Log:
Shut Coverity up (bug #208)- this code is still under development :-).
Jeremy.
Modified:
trunk/source/smbd/trans2.c
Changeset:
Modified: trunk/source/smbd/trans2.c
===================================================================
--- trunk/source/smbd/trans2.c 2006-03-07 16:56:31 UTC (rev 13965)
+++ trunk/source/smbd/trans2.c 2006-03-07 17:02:50 UTC (rev 13966)
@@ -3511,13 +3511,17 @@
case SMB_QUERY_POSIX_LOCK:
{
- NTSTATUS status;
+ NTSTATUS status = NT_STATUS_INVALID_LEVEL;
SMB_BIG_UINT count;
SMB_BIG_UINT offset;
uint16 lock_pid;
enum brl_type lock_type;
- switch (SVAL(lock_data, POSIX_LOCK_TYPE_OFFSET)) {
+ if (total_data != POSIX_LOCK_DATA_SIZE) {
+ return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
+ }
+
+ switch (SVAL(pdata, POSIX_LOCK_TYPE_OFFSET)) {
case POSIX_LOCK_TYPE_READ:
lock_type = READ_LOCK;
break;
@@ -3531,15 +3535,15 @@
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
}
- lock_pid = (uint16)IVAL(lock_data, POSIX_LOCK_PID_OFFSET);
+ lock_pid = (uint16)IVAL(pdata, POSIX_LOCK_PID_OFFSET);
#if defined(HAVE_LONGLONG)
- offset = (((SMB_BIG_UINT) IVAL(lock_data,(POSIX_LOCK_START_OFFSET+4))) << 32) |
- ((SMB_BIG_UINT) IVAL(lock_data,POSIX_LOCK_START_OFFSET));
- count = (((SMB_BIG_UINT) IVAL(lock_data,(POSIX_LOCK_LEN_OFFSET+4))) << 32) |
- ((SMB_BIG_UINT) IVAL(lock_data,POSIX_LOCK_LEN_OFFSET));
+ offset = (((SMB_BIG_UINT) IVAL(pdata,(POSIX_LOCK_START_OFFSET+4))) << 32) |
+ ((SMB_BIG_UINT) IVAL(pdata,POSIX_LOCK_START_OFFSET));
+ count = (((SMB_BIG_UINT) IVAL(pdata,(POSIX_LOCK_LEN_OFFSET+4))) << 32) |
+ ((SMB_BIG_UINT) IVAL(pdata,POSIX_LOCK_LEN_OFFSET));
#else /* HAVE_LONGLONG */
- offset = (SMB_BIG_UINT)IVAL(lock_data,POSIX_LOCK_START_OFFSET);
- count = (SMB_BIG_UINT)IVAL(lock_data,POSIX_LOCK_LEN_OFFSET);
+ offset = (SMB_BIG_UINT)IVAL(pdata,POSIX_LOCK_START_OFFSET);
+ count = (SMB_BIG_UINT)IVAL(pdata,POSIX_LOCK_LEN_OFFSET);
#endif /* HAVE_LONGLONG */
#if 0
@@ -3553,16 +3557,19 @@
&my_lock_ctx);
#endif
- if (!NT_STATUS_IS_OK(status)) {
+ if (ERROR_WAS_LOCK_DENIED(status)) {
/* Here we need to report who has it locked... */
data_size = POSIX_LOCK_DATA_SIZE;
- memcpy(pdata, lock_data, POSIX_LOCK_DATA_SIZE);
- } else {
+ /* FIXME - Coverity tmp fix. */
+ memset(pdata, '\0', POSIX_LOCK_DATA_SIZE);
+ } else if (NT_STATUS_IS_OK(status)) {
/* For success we just return a copy of what we sent
with the lock type set to POSIX_LOCK_TYPE_UNLOCK. */
data_size = POSIX_LOCK_DATA_SIZE;
memcpy(pdata, lock_data, POSIX_LOCK_DATA_SIZE);
SSVAL(pdata, POSIX_LOCK_TYPE_OFFSET,POSIX_LOCK_TYPE_UNLOCK);
+ } else {
+ return ERROR_NT(status);
}
break;
}
More information about the samba-cvs
mailing list