Changeset 51909 in vbox
- Timestamp:
- Jul 7, 2014 8:34:23 PM (10 years ago)
- Location:
- trunk/src/VBox/HostDrivers/Support
- Files:
-
- 2 edited
-
SUPLibInternal.h (modified) (2 diffs)
-
SUPR3HardenedVerify.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/SUPLibInternal.h
r51770 r51909 159 159 kSupIFT_Script, 160 160 kSupIFT_Data, 161 kSupIFT_TestExe, 162 kSupIFT_TestDll, 161 163 kSupIFT_End 162 164 } SUPINSTFILETYPE; … … 174 176 kSupID_AppPrivArchComp, 175 177 kSupID_AppPrivNoArch, 178 kSupID_Testcase, 176 179 kSupID_End 177 180 } SUPINSTDIR; -
trunk/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
r51803 r51909 216 216 { kSupIFT_Dll, kSupID_AppPrivArch, true, "VBoxNetNAT" SUPLIB_DLL_SUFF }, 217 217 //#endif 218 #if defined(VBOX_WITH_HARDENING) && defined(RT_OS_WINDOWS) 219 # define HARDENED_TESTCASE_BIN_ENTRY(a_szName) \ 220 { kSupIFT_TestExe, kSupID_AppBin, true, a_szName SUPLIB_EXE_SUFF }, \ 221 { kSupIFT_TestDll, kSupID_AppBin, true, a_szName SUPLIB_DLL_SUFF } 222 HARDENED_TESTCASE_BIN_ENTRY("tstMicro"), 223 HARDENED_TESTCASE_BIN_ENTRY("tstPDMAsyncCompletion"), 224 HARDENED_TESTCASE_BIN_ENTRY("tstPDMAsyncCompletionStress"), 225 HARDENED_TESTCASE_BIN_ENTRY("tstVMM"), 226 HARDENED_TESTCASE_BIN_ENTRY("tstVMREQ"), 227 # define HARDENED_TESTCASE_ENTRY(a_szName) \ 228 { kSupIFT_TestExe, kSupID_Testcase, true, a_szName SUPLIB_EXE_SUFF }, \ 229 { kSupIFT_TestDll, kSupID_Testcase, true, a_szName SUPLIB_DLL_SUFF } 230 HARDENED_TESTCASE_ENTRY("tstCFGM"), 231 HARDENED_TESTCASE_ENTRY("tstIntNet-1"), 232 HARDENED_TESTCASE_ENTRY("tstMMHyperHeap"), 233 HARDENED_TESTCASE_ENTRY("tstR0ThreadPreemptionDriver"), 234 HARDENED_TESTCASE_ENTRY("tstRTR0MemUserKernelDriver"), 235 HARDENED_TESTCASE_ENTRY("tstRTR0SemMutexDriver"), 236 HARDENED_TESTCASE_ENTRY("tstRTR0TimerDriver"), 237 HARDENED_TESTCASE_ENTRY("tstSSM"), 238 #endif 218 239 }; 219 240 … … 266 287 rc = supR3HardenedPathAppPrivateNoArch(pszDst, cchDst); 267 288 break; 289 case kSupID_Testcase: 290 rc = supR3HardenedPathExecDir(pszDst, cchDst); 291 if (RT_SUCCESS(rc)) 292 { 293 size_t off = suplibHardenedStrLen(pszDst); 294 if (cchDst - off >= sizeof("/testcase")) 295 suplibHardenedMemCopy(&pszDst[off], "/testcase", sizeof("/testcase")); 296 else 297 rc = VERR_BUFFER_OVERFLOW; 298 } 299 break; 268 300 default: 269 301 return supR3HardenedError(VERR_INTERNAL_ERROR, fFatal, … … 353 385 if (RT_SUCCESS(rc)) 354 386 { 355 #if defined(RT_OS_WINDOWS) 387 #if defined(RT_OS_WINDOWS) /** @todo use CreateFileW */ 356 388 HANDLE hDir = CreateFile(szPath, 357 389 GENERIC_READ, … … 367 399 g_aSupVerifiedDirs[enmDir].hDir = (intptr_t)hDir; 368 400 g_aSupVerifiedDirs[enmDir].fValidated = true; 401 } 402 else if (enmDir == kSupID_Testcase) 403 { 404 g_aSupVerifiedDirs[enmDir].fValidated = true; 405 rc = VINF_SUCCESS; /* Optional directory, ignore if missing. */ 369 406 } 370 407 else … … 420 457 } 421 458 } 459 else if (enmDir == kSupID_Testcase) 460 { 461 g_aSupVerifiedDirs[enmDir].fValidated = true; 462 rc = VINF_SUCCESS; /* Optional directory, ignore if missing. */ 463 } 422 464 else 423 465 { … … 522 564 { 523 565 int err = GetLastError(); 524 if (!pFile->fOptional || err != ERROR_FILE_NOT_FOUND) 566 if ( !pFile->fOptional 567 || ( err != ERROR_FILE_NOT_FOUND 568 && (err != ERROR_PATH_NOT_FOUND || pFile->enmDir != kSupID_Testcase) ) ) 525 569 rc = supR3HardenedError(VERR_PATH_NOT_FOUND, fFatal, 526 570 "supR3HardenedVerifyFileInternal: Failed to open '%s': err=%d\n", szPath, err); … … 709 753 if (!suplibHardenedStrNCmp(pszProgName, g_aSupInstallFiles[iFile].pszFile, cchProgName)) 710 754 { 711 if ( g_aSupInstallFiles[iFile].enmType == kSupIFT_Dll 755 if ( ( g_aSupInstallFiles[iFile].enmType == kSupIFT_Dll 756 || g_aSupInstallFiles[iFile].enmType == kSupIFT_TestDll) 712 757 && !suplibHardenedStrCmp(&g_aSupInstallFiles[iFile].pszFile[cchProgName], SUPLIB_DLL_SUFF)) 713 758 { … … 718 763 fDll = true; 719 764 } 720 else if ( g_aSupInstallFiles[iFile].enmType == kSupIFT_Exe 765 else if ( ( g_aSupInstallFiles[iFile].enmType == kSupIFT_Exe 766 || g_aSupInstallFiles[iFile].enmType == kSupIFT_TestExe) 721 767 && !suplibHardenedStrCmp(&g_aSupInstallFiles[iFile].pszFile[cchProgName], SUPLIB_EXE_SUFF)) 722 768 { … … 1528 1574 */ 1529 1575 HANDLE hVerify; 1530 if (hNativeFile == RTHCUINTPTR_MAX) 1576 if (hNativeFile == RTHCUINTPTR_MAX) /** @todo Need to use WCHAR on windows! */ 1531 1577 hVerify = CreateFile(pszFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 1532 1578 else if (!DuplicateHandle(GetCurrentProcess(), (HANDLE)hNativeFile, GetCurrentProcess(), &hVerify,
Note:
See TracChangeset
for help on using the changeset viewer.

