Changeset 75053 in vbox for trunk/src/VBox/HostDrivers
- Timestamp:
- Oct 24, 2018 7:08:56 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 126100
- Location:
- trunk/src/VBox/HostDrivers/Support
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/Makefile.kmk
r74767 r75053 124 124 "$@") 125 125 # The build certificate. 126 if "$(KBUILD_TARGET)" == "win" && defined(VBOX_WITH_HARDENING) && defined(VBOX_SIGNING_MODE) 126 if ("$(KBUILD_TARGET)" == "win" && defined(VBOX_WITH_HARDENING) && defined(VBOX_SIGNING_MODE)) \ 127 || ("$(KBUILD_TARGET)" == "darwin" && defined(VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION) && defined(VBOX_SIGNING_MODE)) 127 128 $(VBOX_RTSIGNTOOL) extract-exe-signer-cert --exe $(VBOX_RTSIGNTOOL) --output "[email protected]" --der 128 129 $(VBOX_BIN2C) -ascii --append SUPBuildCert "[email protected]" $@ … … 619 620 VBoxDrv_DEFS.darwin += VBOX_WITH_RAW_MODE 620 621 endif 622 ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 623 VBoxDrv_DEFS.darwin += VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 624 endif 621 625 ifdef VBOX_WITH_NETFLT 622 626 VBoxDrv_DEFS.solaris += VBOX_WITH_NETFLT … … 661 665 VBoxDrv_SOURCES.darwin = \ 662 666 darwin/SUPDrv-darwin.cpp 667 ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 668 VBoxDrv_SOURCES.darwin += \ 669 $(VBOX_SUP_WIN_CERTS_FILE) 670 endif 663 671 VBoxDrv_SOURCES.solaris = \ 664 672 solaris/SUPDrv-solaris.c -
trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp
r75049 r75053 5572 5572 return VINF_SUCCESS; 5573 5573 } 5574 5575 if (!strcmp(pszSymbol, "g_SUPGlobalInfoPage")) 5576 { 5577 *puValue = (uintptr_t)g_pSUPGlobalInfoPage; 5578 return VINF_SUCCESS; 5579 } 5580 5574 5581 return VERR_SYMBOL_NOT_FOUND; 5575 5582 } -
trunk/src/VBox/HostDrivers/Support/SUPDrvInternal.h
r75052 r75053 369 369 struct module *pLnxModHack; 370 370 #endif 371 #if defined(RT_OS_DARWIN) 371 #if defined(RT_OS_DARWIN) && defined(VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION) 372 372 /** Load module handle. */ 373 373 RTLDRMOD hLdrMod; … … 795 795 /** Callback handle returned by ExRegisterCallback. */ 796 796 PVOID hPowerCallback; 797 # elif defined(RT_OS_DARWIN) 797 # elif defined(RT_OS_DARWIN) && defined(VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION) 798 798 /** Trusted root certificates for code signing validation. */ 799 799 RTCRSTORE hRootStore; -
trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.cpp
r75052 r75053 101 101 static kern_return_t VBoxDrvDarwinStart(struct kmod_info *pKModInfo, void *pvData); 102 102 static kern_return_t VBoxDrvDarwinStop(struct kmod_info *pKModInfo, void *pvData); 103 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION103 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 104 104 static int supdrvDarwinInitCertStores(PSUPDRVDEVEXT pDevExt); 105 105 static void supdrvDarwinDestroyCertStores(PSUPDRVDEVEXT pDevExt); … … 286 286 if (RT_SUCCESS(rc)) 287 287 { 288 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION288 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 289 289 supdrvDarwinInitCertStores(&g_DevExt); 290 290 #endif … … 353 353 LogRel(("VBoxDrv: cdevsw_add failed (%d)\n", g_iMajorDeviceNo)); 354 354 } 355 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION355 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 356 356 supdrvDarwinDestroyCertStores(&g_DevExt); 357 357 #endif … … 439 439 440 440 441 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION441 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 442 442 443 443 /** … … 495 495 } 496 496 497 #endif /* SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION */497 #endif /* VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION */ 498 498 499 499 /** … … 534 534 g_Spinlock = NIL_RTSPINLOCK; 535 535 536 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION536 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 537 537 supdrvDarwinDestroyCertStores(&g_DevExt); 538 538 #endif … … 1223 1223 1224 1224 1225 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION1225 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 1226 1226 1227 1227 /** … … 1273 1273 { 1274 1274 RT_NOREF(pvUser); //PSUPDRVDEVEXT pDevExt = (PSUPDRVDEVEXT)pvUser; 1275 # ifdef DEBUG_bird 1276 printf("supdrvDarwinLdrOpenVerifyCertificatCallback: pCert=%p hCertPaths=%p\n", pCert, hCertPaths); 1277 # endif 1275 1278 1276 1279 # if 0 … … 1361 1364 } 1362 1365 1363 #endif /* SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION */1366 #endif /* VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION */ 1364 1367 1365 1368 int VBOXCALL supdrvOSLdrOpen(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, const char *pszFilename) 1366 1369 { 1367 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION1370 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 1368 1371 /* 1369 1372 * Initialize our members. … … 1450 1453 } 1451 1454 return rc; 1452 #else /* ! SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION */1455 #else /* !VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION */ 1453 1456 NOREF(pDevExt); NOREF(pImage); NOREF(pszFilename); 1454 1457 return VERR_NOT_SUPPORTED; 1455 #endif /* ! SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION */1456 } 1457 1458 1459 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION1458 #endif /* !VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION */ 1459 } 1460 1461 1462 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 1460 1463 /** 1461 1464 * @callback_method_impl{FNRTLDRENUMSYMS, … … 1476 1479 const uint8_t *pbImageBits, const char *pszSymbol) 1477 1480 { 1478 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION1481 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 1479 1482 AssertReturn(pImage->hLdrMod != NIL_RTLDRMOD, VERR_INVALID_STATE); 1480 1483 … … 1485 1488 if (RT_C_IS_UPPER(*pszSymbol)) 1486 1489 { 1487 void *pvFound = NULL;1488 rc = RTLdrGetSymbol (pImage->hLdrMod, pszSymbol, &pvFound);1490 RTLDRADDR uValueFound; 1491 rc = RTLdrGetSymbolEx(pImage->hLdrMod, pImage->pvImage, (uintptr_t)pImage->pvImage, UINT32_MAX, pszSymbol, &uValueFound); 1489 1492 if (RT_SUCCESS(rc)) 1490 1493 { 1491 if ( pvFound ==pv)1494 if (uValueFound == (uintptr_t)pv) 1492 1495 rc = VINF_SUCCESS; 1493 1496 else 1494 1497 { 1495 SUPR0Printf("SUPDrv: Different exports found for %s in %s: % p, expected %p\n",1496 pszSymbol, pImage->szName, pvFound, pv);1498 SUPR0Printf("SUPDrv: Different exports found for %s in %s: %RTptr, expected %p\n", 1499 pszSymbol, pImage->szName, (RTUINTPTR)uValueFound, pv); 1497 1500 rc = VERR_LDR_BAD_FIXUP; 1498 1501 } … … 1529 1532 int VBOXCALL supdrvOSLdrLoad(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, const uint8_t *pbImageBits, PSUPLDRLOAD pReq) 1530 1533 { 1531 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION1534 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 1532 1535 /* State paranoia. */ 1533 1536 AssertReturn(pImage->hLdrMod != NIL_RTLDRMOD, VERR_INVALID_STATE); … … 1554 1557 void VBOXCALL supdrvOSLdrUnload(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage) 1555 1558 { 1556 #ifdef SUPDRV_WITH_DARWIN_IMAGE_VERIFICATION1559 #ifdef VBOX_WITH_DARWIN_R0_DARWIN_IMAGE_VERIFICATION 1557 1560 if (pImage->hLdrMod != NIL_RTLDRMOD) 1558 1561 {
Note:
See TracChangeset
for help on using the changeset viewer.