Changeset 39236 in vbox for trunk/src/VBox/HostServices/GuestProperties/testcase
- Timestamp:
- Nov 8, 2011 1:05:10 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 74762
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/GuestProperties/testcase/tstGuestPropSvc.cpp
r39233 r39236 335 335 aParms[0].setPointer((void *)g_aEnumStrings[i].pszPatterns, g_aEnumStrings[i].cchPatterns); 336 336 aParms[1].setPointer((void *)abBuffer, g_aEnumStrings[i].cbBuffer - 1); 337 memset(abBuffer, 0x55, sizeof(abBuffer)); 337 338 int rc2 = ptable->pfnHostCall(ptable->pvService, ENUM_PROPS_HOST, 3, aParms); 338 339 if (rc2 == VERR_BUFFER_OVERFLOW) … … 350 351 aParms[0].setPointer((void *)g_aEnumStrings[i].pszPatterns, g_aEnumStrings[i].cchPatterns); 351 352 aParms[1].setPointer((void *)abBuffer, g_aEnumStrings[i].cbBuffer); 353 memset(abBuffer, 0x55, sizeof(abBuffer)); 352 354 rc2 = ptable->pfnHostCall(ptable->pvService, ENUM_PROPS_HOST, 3, aParms); 353 355 if (rc2 == VINF_SUCCESS) … … 410 412 RTStrPrintf(szValue, sizeof(szValue), "%s", pcszValue); 411 413 RTStrPrintf(szFlags, sizeof(szFlags), "%s", pcszFlags); 412 aParms[0].set Pointer (szName, (uint32_t)strlen(szName) + 1);413 aParms[1].set Pointer (szValue, (uint32_t)strlen(szValue) + 1);414 aParms[2].set Pointer (szFlags, (uint32_t)strlen(szFlags) + 1);414 aParms[0].setString(szName); 415 aParms[1].setString(szValue); 416 aParms[2].setString(szFlags); 415 417 if (isHost) 416 418 callHandle.rc = pTable->pfnHostCall(pTable->pvService, command, … … 494 496 command = DEL_PROP_HOST; 495 497 VBOXHGCMSVCPARM aParms[1]; 496 /* Work around silly constant issues - we ought to allow passing 497 * constant strings in the hgcm parameters. */ 498 char szName[MAX_NAME_LEN]; 499 RTStrPrintf(szName, sizeof(szName), "%s", pcszName); 500 aParms[0].setPointer (szName, (uint32_t)strlen(szName) + 1); 498 aParms[0].setString(pcszName); 501 499 if (isHost) 502 500 callHandle.rc = pTable->pfnHostCall(pTable->pvService, command, 1, aParms); … … 596 594 /* Work around silly constant issues - we ought to allow passing 597 595 * constant strings in the hgcm parameters. */ 598 char szName[MAX_NAME_LEN] = "";599 596 char szBuffer[MAX_VALUE_LEN + MAX_FLAGS_LEN]; 600 597 RTTESTI_CHECK_RETV(s_aGetProperties[i].cchValue < sizeof(szBuffer)); 601 RTTESTI_CHECK_RETV(strlen(s_aGetProperties[i].pcszName) < sizeof(szName)); 602 603 strcpy(szName, s_aGetProperties[i].pcszName); 604 aParms[0].setPointer(szName, (uint32_t)(strlen(szName) + 1)); 598 599 aParms[0].setString(s_aGetProperties[i].pcszName); 600 memset(szBuffer, 0x55, sizeof(szBuffer)); 605 601 aParms[1].setPointer(szBuffer, sizeof(szBuffer)); 606 602 int rc2 = pTable->pfnHostCall(pTable->pvService, GET_PROP_HOST, 4, aParms); … … 967 963 } 968 964 969 970 965 static void test4(void) 971 966 { … … 984 979 985 980 /* Get the value with buffer sizes up to 1K. */ 986 for (uint32_t cbBuf = 0; cbBuf < _1K; cbBuf++) 987 { 988 void *pvBuf = RTTestGuardedAllocTail(g_hTest, cbBuf); 989 990 VBOXHGCMSVCPARM aParms[4]; 991 aParms[0].setString(s_szProp); 992 aParms[1].setPointer(pvBuf, cbBuf); 993 int rc = svcTable.pfnHostCall(svcTable.pvService, GET_PROP_HOST, 4, aParms); 994 995 RTTestGuardedFree(g_hTest, pvBuf); 981 for (unsigned iVariation = 0; iVariation < 2; iVariation++) 982 { 983 for (uint32_t cbBuf = 0; cbBuf < _1K; cbBuf++) 984 { 985 void *pvBuf; 986 RTTESTI_CHECK_RC_BREAK(RTTestGuardedAlloc(g_hTest, cbBuf, 1, iVariation == 0, &pvBuf), VINF_SUCCESS); 987 988 VBOXHGCMSVCPARM aParms[4]; 989 aParms[0].setString(s_szProp); 990 aParms[1].setPointer(pvBuf, cbBuf); 991 int rc = svcTable.pfnHostCall(svcTable.pvService, GET_PROP_HOST, RT_ELEMENTS(aParms), aParms); 992 993 RTTestGuardedFree(g_hTest, pvBuf); 994 } 996 995 } 997 996 … … 1000 999 } 1001 1000 1002 1003 1004 1001 static void test5(void) 1002 { 1003 RTTestISub("ENUM_PROPS_HOST buffer handling"); 1004 1005 VBOXHGCMSVCFNTABLE svcTable; 1006 VBOXHGCMSVCHELPERS svcHelpers; 1007 initTable(&svcTable, &svcHelpers); 1008 RTTESTI_CHECK_RC_OK_RETV(VBoxHGCMSvcLoad(&svcTable)); 1009 1010 /* Insert a few property that we can mess around with. */ 1011 RTTESTI_CHECK_RC_OK(doSetProperty(&svcTable, "/MyProperties/Sub/Sub/Sub/Sub/Sub/Sub/Sub/Property", "Property Value", "", true, true)); 1012 RTTESTI_CHECK_RC_OK(doSetProperty(&svcTable, "/MyProperties/12357", "83848569", "", true, true)); 1013 RTTESTI_CHECK_RC_OK(doSetProperty(&svcTable, "/MyProperties/56678", "abcdefghijklm", "", true, true)); 1014 RTTESTI_CHECK_RC_OK(doSetProperty(&svcTable, "/MyProperties/932769", "n", "", true, true)); 1015 1016 /* Get the value with buffer sizes up to 1K. */ 1017 for (unsigned iVariation = 0; iVariation < 2; iVariation++) 1018 { 1019 for (uint32_t cbBuf = 0; cbBuf < _1K; cbBuf++) 1020 { 1021 void *pvBuf; 1022 RTTESTI_CHECK_RC_BREAK(RTTestGuardedAlloc(g_hTest, cbBuf, 1, iVariation == 0, &pvBuf), VINF_SUCCESS); 1023 1024 VBOXHGCMSVCPARM aParms[3]; 1025 aParms[0].setString("*"); 1026 aParms[1].setPointer(pvBuf, cbBuf); 1027 int rc2 = svcTable.pfnHostCall(svcTable.pvService, ENUM_PROPS_HOST, RT_ELEMENTS(aParms), aParms); 1028 1029 RTTestGuardedFree(g_hTest, pvBuf); 1030 } 1031 } 1032 1033 /* Done. */ 1034 RTTESTI_CHECK_RC_OK(svcTable.pfnUnload(svcTable.pvService)); 1035 } 1036 1037 static void test6(void) 1005 1038 { 1006 1039 RTTestISub("Max properties"); … … 1099 1132 test4(); 1100 1133 test5(); 1134 test6(); 1101 1135 1102 1136 return RTTestSummaryAndDestroy(g_hTest);
Note:
See TracChangeset
for help on using the changeset viewer.