Changeset 73097 in vbox for trunk/src/VBox/Runtime/common/ldr/ldrPE.cpp
- Timestamp:
- Jul 12, 2018 9:06:33 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 123672
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/ldr/ldrPE.cpp
r70313 r73097 1134 1134 * Enough buffer? 1135 1135 */ 1136 uint32_t cbNeeded = RT_ OFFSETOF(RTLDRIMPORTINFO, szModule[iImpOrdinal != UINT32_MAX ? offDot + 1 : off + 1]);1136 uint32_t cbNeeded = RT_UOFFSETOF_DYN(RTLDRIMPORTINFO, szModule[iImpOrdinal != UINT32_MAX ? offDot + 1 : off + 1]); 1137 1137 if (cbNeeded > cbInfo) 1138 1138 return VERR_BUFFER_OVERFLOW; … … 1519 1519 { 1520 1520 rc = RTUtf16ToUtf8Ex((PCRTUTF16)&pMisc->Data[0], 1521 (pMisc->Length - RT_ OFFSETOF(IMAGE_DEBUG_MISC, Data)) / sizeof(RTUTF16),1521 (pMisc->Length - RT_UOFFSETOF(IMAGE_DEBUG_MISC, Data)) / sizeof(RTUTF16), 1522 1522 &pszPath, RTPATH_MAX, NULL); 1523 1523 if (RT_SUCCESS(rc)) … … 2141 2141 pPlaces->offCksum = (uint32_t)pModPe->offNtHdrs 2142 2142 + (pModPe->f64Bit 2143 ? RT_ OFFSETOF(IMAGE_NT_HEADERS64, OptionalHeader.CheckSum)2144 : RT_ OFFSETOF(IMAGE_NT_HEADERS32, OptionalHeader.CheckSum));2143 ? RT_UOFFSETOF(IMAGE_NT_HEADERS64, OptionalHeader.CheckSum) 2144 : RT_UOFFSETOF(IMAGE_NT_HEADERS32, OptionalHeader.CheckSum)); 2145 2145 pPlaces->cbCksum = RT_SIZEOFMEMB(IMAGE_NT_HEADERS32, OptionalHeader.CheckSum); 2146 2146 pPlaces->offSecDir = (uint32_t)pModPe->offNtHdrs 2147 2147 + (pModPe->f64Bit 2148 ? RT_ OFFSETOF(IMAGE_NT_HEADERS64, OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY])2149 : RT_ OFFSETOF(IMAGE_NT_HEADERS32, OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY]));2148 ? RT_UOFFSETOF(IMAGE_NT_HEADERS64, OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY]) 2149 : RT_UOFFSETOF(IMAGE_NT_HEADERS32, OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY])); 2150 2150 pPlaces->cbSecDir = sizeof(IMAGE_DATA_DIRECTORY); 2151 2151 pPlaces->offEndSpecial = pPlaces->offSecDir + pPlaces->cbSecDir; … … 2460 2460 RTAsn1CursorInitPrimary(&PrimaryCursor, 2461 2461 &pEntry->bCertificate[0], 2462 pEntry->dwLength - RT_ OFFSETOF(WIN_CERTIFICATE, bCertificate),2462 pEntry->dwLength - RT_UOFFSETOF(WIN_CERTIFICATE, bCertificate), 2463 2463 pErrInfo, 2464 2464 &g_RTAsn1DefaultAllocator, … … 2985 2985 2986 2986 /* from LoaderFlags and out the difference is 4 * 32-bits. */ 2987 Assert(RT_ OFFSETOF(IMAGE_OPTIONAL_HEADER32, LoaderFlags) + 16 == RT_OFFSETOF(IMAGE_OPTIONAL_HEADER64, LoaderFlags));2988 Assert( RT_ OFFSETOF(IMAGE_OPTIONAL_HEADER32, DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]) + 162989 == RT_ OFFSETOF(IMAGE_OPTIONAL_HEADER64, DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]));2987 Assert(RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER32, LoaderFlags) + 16 == RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER64, LoaderFlags)); 2988 Assert( RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER32, DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]) + 16 2989 == RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER64, DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES])); 2990 2990 uint32_t volatile *pu32Dst = (uint32_t *)&pOptHdr64->DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] - 1; 2991 2991 const uint32_t volatile *pu32Src = (uint32_t *)&pOptHdr32->DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] - 1; … … 3005 3005 * other since this is all declared volatile, but taking now chances, we'll use a temp variable. 3006 3006 */ 3007 Assert(RT_ OFFSETOF(IMAGE_OPTIONAL_HEADER32, SizeOfStackReserve) == RT_OFFSETOF(IMAGE_OPTIONAL_HEADER64, SizeOfStackReserve));3008 Assert(RT_ OFFSETOF(IMAGE_OPTIONAL_HEADER32, BaseOfData) == RT_OFFSETOF(IMAGE_OPTIONAL_HEADER64, ImageBase));3009 Assert(RT_ OFFSETOF(IMAGE_OPTIONAL_HEADER32, SectionAlignment) == RT_OFFSETOF(IMAGE_OPTIONAL_HEADER64, SectionAlignment));3007 Assert(RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER32, SizeOfStackReserve) == RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER64, SizeOfStackReserve)); 3008 Assert(RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER32, BaseOfData) == RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER64, ImageBase)); 3009 Assert(RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER32, SectionAlignment) == RT_UOFFSETOF(IMAGE_OPTIONAL_HEADER64, SectionAlignment)); 3010 3010 uint32_t u32ImageBase = pOptHdr32->ImageBase; 3011 3011 pOptHdr64->ImageBase = u32ImageBase; … … 3066 3066 pLoadCfg64->DeCommitFreeBlockThreshold = u32DeCommitFreeBlockThreshold; 3067 3067 /* the rest is equal. */ 3068 Assert( RT_ OFFSETOF(IMAGE_LOAD_CONFIG_DIRECTORY32, DeCommitFreeBlockThreshold)3069 == RT_ OFFSETOF(IMAGE_LOAD_CONFIG_DIRECTORY64, DeCommitFreeBlockThreshold));3068 Assert( RT_UOFFSETOF(IMAGE_LOAD_CONFIG_DIRECTORY32, DeCommitFreeBlockThreshold) 3069 == RT_UOFFSETOF(IMAGE_LOAD_CONFIG_DIRECTORY64, DeCommitFreeBlockThreshold)); 3070 3070 } 3071 3071 … … 3898 3898 pModPe->offPkcs7SignedData = Dir.VirtualAddress 3899 3899 + (uint32_t)((uintptr_t)&pCur->bCertificate[0] - (uintptr_t)pFirst); 3900 pModPe->cbPkcs7SignedData = pCur->dwLength - RT_ OFFSETOF(WIN_CERTIFICATE, bCertificate);3900 pModPe->cbPkcs7SignedData = pCur->dwLength - RT_UOFFSETOF(WIN_CERTIFICATE, bCertificate); 3901 3901 } 3902 3902
Note:
See TracChangeset
for help on using the changeset viewer.