summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVMware, Inc <>2013-09-17 20:39:10 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2013-09-22 22:26:42 -0700
commit155eb8d6615c947b71167fabe44b2fbca70a1e39 (patch)
tree86600626dcaf2fbef42ee9769b36fa9f4e805e47
parent63b4fa8d551de8e90101b6de4646d8573f764329 (diff)
HGFS: Clean up HGFS server unpack file name V3 arguments
The HGFS server unpack file name argument for V3 packets generates coverity warnings as it stands. It is also just plain dubious in its usage using the out argument even when not initialized in the failure case. Signed-off-by: Dmitry Torokhov <dtor@vmware.com>
-rw-r--r--open-vm-tools/lib/hgfsServer/hgfsServerParameters.c87
1 files changed, 54 insertions, 33 deletions
diff --git a/open-vm-tools/lib/hgfsServer/hgfsServerParameters.c b/open-vm-tools/lib/hgfsServer/hgfsServerParameters.c
index 72459117..6bf18785 100644
--- a/open-vm-tools/lib/hgfsServer/hgfsServerParameters.c
+++ b/open-vm-tools/lib/hgfsServer/hgfsServerParameters.c
@@ -1415,14 +1415,17 @@ HgfsUnpackFileNameV3(const HgfsFileNameV3 *name, // IN: file name
HgfsHandle *file, // OUT: HGFS file handle
uint32 *caseFlags) // OUT: case-sensitivity flags
{
+ *useHandle = FALSE;
+ *file = HGFS_INVALID_HANDLE;
+ *cpName = NULL;
+ *cpNameSize = 0;
+
/*
* If we've been asked to reuse a handle, we don't need to look at, let
* alone test the filename or its length.
*/
if (name->flags & HGFS_FILE_NAME_USE_FILE_DESC) {
*file = name->fid;
- *cpName = NULL;
- *cpNameSize = 0;
*caseFlags = HGFS_FILE_NAME_DEFAULT_CASE;
*useHandle = TRUE;
} else {
@@ -1435,11 +1438,9 @@ HgfsUnpackFileNameV3(const HgfsFileNameV3 *name, // IN: file name
LOG(4, ("%s: Error unpacking file name - buffer too small\n", __FUNCTION__));
return FALSE;
}
- *file = HGFS_INVALID_HANDLE;
*cpName = name->name;
*cpNameSize = name->length;
*caseFlags = name->caseType;
- *useHandle = FALSE;
}
return TRUE;
}
@@ -1478,26 +1479,33 @@ HgfsUnpackDeletePayloadV3(const HgfsRequestDeleteV3 *requestV3, // IN: request p
HgfsHandle *file, // OUT: file handle
uint32 *caseFlags) // OUT: case-sensitivity flags
{
- Bool result;
+ Bool result = TRUE;
Bool useHandle;
if (payloadSize < sizeof *requestV3) {
- return FALSE;
+ result = FALSE;
+ goto exit;
}
*hints = requestV3->hints;
- result = HgfsUnpackFileNameV3(&requestV3->fileName,
- payloadSize - sizeof *requestV3,
- &useHandle,
- cpName,
- cpNameSize,
- file,
- caseFlags);
+ if (!HgfsUnpackFileNameV3(&requestV3->fileName,
+ payloadSize - sizeof *requestV3,
+ &useHandle,
+ cpName,
+ cpNameSize,
+ file,
+ caseFlags)) {
+ result = FALSE;
+ goto exit;
+ }
+
if (useHandle) {
*hints |= HGFS_DELETE_HINT_USE_FILE_DESC;
}
+exit:
+ LOG(8, ("%s: unpacking HGFS_OP_DELETE_DIR/FILE_V3 -> %d\n", __FUNCTION__, result));
return result;
}
@@ -1854,6 +1862,7 @@ HgfsUnpackRenamePayloadV3(const HgfsRequestRenameV3 *requestV3, // IN: request p
*hints |= HGFS_RENAME_HINT_USE_TARGETFILE_DESC;
}
+ LOG(8, ("%s: unpacking HGFS_OP_RENAME_V3 -> success\n", __FUNCTION__));
return TRUE;
}
@@ -2197,26 +2206,33 @@ HgfsUnpackGetattrPayloadV3(const HgfsRequestGetattrV3 *requestV3,// IN: request
HgfsHandle *file, // OUT: file handle
uint32 *caseFlags) // OUT: case-sensitivity flags
{
- Bool result;
+ Bool result = TRUE;
Bool useHandle;
if (payloadSize < sizeof *requestV3) {
- return FALSE;
+ result = FALSE;
+ goto exit;
}
*hints = requestV3->hints;
- result = HgfsUnpackFileNameV3(&requestV3->fileName,
- payloadSize - sizeof *requestV3,
- &useHandle,
- cpName,
- cpNameSize,
- file,
- caseFlags);
+ if (!HgfsUnpackFileNameV3(&requestV3->fileName,
+ payloadSize - sizeof *requestV3,
+ &useHandle,
+ cpName,
+ cpNameSize,
+ file,
+ caseFlags)) {
+ result = FALSE;
+ goto exit;
+ }
+
if (useHandle) {
*hints |= HGFS_ATTR_HINT_USE_FILE_DESC;
}
+exit:
+ LOG(8, ("%s: unpacking HGFS_OP_GETATTR_V3 -> %d\n", __FUNCTION__, result));
return result;
}
@@ -3390,30 +3406,35 @@ HgfsUnpackSetattrPayloadV3(const HgfsRequestSetattrV3 *requestV3,// IN: request
HgfsHandle *file, // OUT: file handle
uint32 *caseFlags) // OUT: case-sensitivity flags
{
- Bool result;
+ Bool result = TRUE;
Bool useHandle;
if (payloadSize < sizeof *requestV3) {
- return FALSE;
+ result = FALSE;
+ goto exit;
}
*hints = requestV3->hints;
HgfsUnpackAttrV2(&requestV3->attr, attr);
- result = HgfsUnpackFileNameV3(&requestV3->fileName,
- payloadSize - sizeof *requestV3,
- &useHandle,
- cpName,
- cpNameSize,
- file,
- caseFlags);
+ if (!HgfsUnpackFileNameV3(&requestV3->fileName,
+ payloadSize - sizeof *requestV3,
+ &useHandle,
+ cpName,
+ cpNameSize,
+ file,
+ caseFlags)) {
+ result = FALSE;
+ goto exit;
+ }
+
if (useHandle) {
*hints |= HGFS_ATTR_HINT_USE_FILE_DESC;
}
- LOG(4, ("%s: unpacking HGFS_OP_SETATTR_V3, %u\n", __FUNCTION__,
- *caseFlags));
+exit:
+ LOG(8, ("%s: unpacking HGFS_OP_SETATTR_V3 -> %d\n", __FUNCTION__, result));
return result;
}