Changeset 98358 in vbox for trunk/src/VBox/HostServices/HostChannel
- Timestamp:
- Jan 31, 2023 10:56:27 AM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 155595
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/HostChannel/VBoxHostChannelSvc.cpp
r98103 r98358 245 245 246 246 if (cParms != 3) 247 { 248 rc = VERR_INVALID_PARAMETER; 249 } 247 rc = VERR_INVALID_PARAMETER; 250 248 else if ( paParms[0].type != VBOX_HGCM_SVC_PARM_PTR /* name */ 251 249 || paParms[1].type != VBOX_HGCM_SVC_PARM_32BIT /* flags */ 252 250 || paParms[2].type != VBOX_HGCM_SVC_PARM_32BIT /* handle */ 253 251 ) 254 { 255 rc = VERR_INVALID_PARAMETER; 256 } 252 rc = VERR_INVALID_PARAMETER; 257 253 else 258 254 { 259 255 uint32_t u32Flags; 260 void *pvName;256 const char *pszName; 261 257 uint32_t cbName; 262 258 263 rc = VBoxHGCMParmPtrGet(&paParms[0], &pvName, &cbName); 264 259 rc = VBoxHGCMParmPtrGet(&paParms[0], (void **)&pszName, &cbName); 260 if ( RT_SUCCESS(rc) 261 && pszName[cbName - 1] != '\0') 262 rc = VERR_INVALID_PARAMETER; 263 if (RT_SUCCESS(rc)) 264 rc = VBoxHGCMParmUInt32Get(&paParms[1], &u32Flags); 265 265 if (RT_SUCCESS(rc)) 266 266 { 267 rc = VBoxHGCMParmUInt32Get(&paParms[1], &u32Flags);268 267 uint32_t u32Handle = 0; 268 rc = vboxHostChannelAttach(pClient, &u32Handle, pszName, u32Flags); 269 269 if (RT_SUCCESS(rc)) 270 { 271 uint32_t u32Handle = 0; 272 273 /** @todo make sure that pvName is a nul terminated */ 274 rc = vboxHostChannelAttach(pClient, &u32Handle, (const char *)pvName, u32Flags); 275 276 if (RT_SUCCESS(rc)) 277 { 278 VBoxHGCMParmUInt32Set(&paParms[2], u32Handle); 279 } 280 } 270 VBoxHGCMParmUInt32Set(&paParms[2], u32Handle); 281 271 } 282 272 } … … 516 506 else 517 507 { 518 void *pvName;508 const char *pszName; 519 509 uint32_t cbName; 520 510 uint32_t u32Code; … … 524 514 uint32_t cbData; 525 515 526 rc = VBoxHGCMParmPtrGet(&paParms[0], &pvName, &cbName); 527 516 rc = VBoxHGCMParmPtrGet(&paParms[0], (void **)&pszName, &cbName); 517 if ( RT_SUCCESS(rc) 518 && pszName[cbName - 1] != '\0') 519 rc = VERR_INVALID_PARAMETER; 520 521 if (RT_SUCCESS(rc)) 522 rc = VBoxHGCMParmUInt32Get(&paParms[1], &u32Code); 523 if (RT_SUCCESS (rc)) 524 rc = VBoxHGCMParmPtrGet(&paParms[2], &pvParm, &cbParm); 525 if (RT_SUCCESS (rc)) 526 rc = VBoxHGCMParmPtrGet(&paParms[3], &pvData, &cbData); 528 527 if (RT_SUCCESS (rc)) 529 528 { 530 rc = VBoxHGCMParmUInt32Get (&paParms[1], &u32Code); 531 532 if (RT_SUCCESS (rc)) 533 { 534 rc = VBoxHGCMParmPtrGet (&paParms[2], &pvParm, &cbParm); 535 536 if (RT_SUCCESS (rc)) 537 { 538 rc = VBoxHGCMParmPtrGet (&paParms[3], &pvData, &cbData); 539 540 if (RT_SUCCESS (rc)) 541 { 542 uint32_t u32SizeDataReturned = 0; 543 544 /** @todo make sure that pvName is a nul terminated */ 545 rc = vboxHostChannelQuery(pClient, (const char *)pvName, u32Code, 546 pvParm, cbParm, 547 pvData, cbData, &u32SizeDataReturned); 548 if (RT_SUCCESS(rc)) 549 { 550 VBoxHGCMParmUInt32Set(&paParms[4], u32SizeDataReturned); 551 } 552 } 553 } 554 } 529 uint32_t u32SizeDataReturned = 0; 530 rc = vboxHostChannelQuery(pClient, pszName, u32Code, 531 pvParm, cbParm, 532 pvData, cbData, &u32SizeDataReturned); 533 if (RT_SUCCESS(rc)) 534 VBoxHGCMParmUInt32Set(&paParms[4], u32SizeDataReturned); 555 535 } 556 536 }
Note:
See TracChangeset
for help on using the changeset viewer.