Changeset 95612 in vbox for trunk/src/VBox/Runtime/common/ldr
- Timestamp:
- Jul 13, 2022 12:51:28 AM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 152252
- Location:
- trunk/src/VBox/Runtime/common/ldr
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/ldr/ldrEx.cpp
r93115 r95612 629 629 break; 630 630 case RTLDRPROP_PKCS7_SIGNED_DATA: 631 case RTLDRPROP_SHA1_PAGE_HASHES: 632 case RTLDRPROP_SHA256_PAGE_HASHES: 631 633 *pcbRet = 0; 634 break; 635 case RTLDRPROP_HASHABLE_PAGES: 636 *pcbRet = sizeof(uint32_t); 637 AssertReturn(cbBuf >= sizeof(uint32_t), VERR_INVALID_PARAMETER); 632 638 break; 633 639 case RTLDRPROP_SIGNATURE_CHECKS_ENFORCED: … … 693 699 694 700 695 RTDECL(int) RTLdrHashImage(RTLDRMOD hLdrMod, RTDIGESTTYPE enmDigest, char *pszDigest, size_t cbDigest)701 RTDECL(int) RTLdrHashImage(RTLDRMOD hLdrMod, RTDIGESTTYPE enmDigest, uint8_t *pabHash, size_t cbHash) 696 702 { 697 703 AssertMsgReturn(rtldrIsValid(hLdrMod), ("hLdrMod=%p\n", hLdrMod), VERR_INVALID_HANDLE); … … 704 710 switch (enmDigest) 705 711 { 706 case RTDIGESTTYPE_MD5: AssertReturn(cb Digest >= RTMD5_DIGEST_LEN + 1,VERR_BUFFER_OVERFLOW); break;707 case RTDIGESTTYPE_SHA1: AssertReturn(cb Digest >= RTSHA1_DIGEST_LEN + 1,VERR_BUFFER_OVERFLOW); break;708 case RTDIGESTTYPE_SHA256: AssertReturn(cb Digest >= RTSHA256_DIGEST_LEN + 1, VERR_BUFFER_OVERFLOW); break;709 case RTDIGESTTYPE_SHA512: AssertReturn(cb Digest >= RTSHA512_DIGEST_LEN + 1, VERR_BUFFER_OVERFLOW); break;712 case RTDIGESTTYPE_MD5: AssertReturn(cbHash >= RTMD5_HASH_SIZE, VERR_BUFFER_OVERFLOW); break; 713 case RTDIGESTTYPE_SHA1: AssertReturn(cbHash >= RTSHA1_HASH_SIZE, VERR_BUFFER_OVERFLOW); break; 714 case RTDIGESTTYPE_SHA256: AssertReturn(cbHash >= RTSHA256_HASH_SIZE, VERR_BUFFER_OVERFLOW); break; 715 case RTDIGESTTYPE_SHA512: AssertReturn(cbHash >= RTSHA512_HASH_SIZE, VERR_BUFFER_OVERFLOW); break; 710 716 default: 711 717 if (enmDigest > RTDIGESTTYPE_INVALID && enmDigest < RTDIGESTTYPE_END) … … 713 719 AssertFailedReturn(VERR_INVALID_PARAMETER); 714 720 } 715 AssertPtrReturn(p szDigest, VERR_INVALID_POINTER);721 AssertPtrReturn(pabHash, VERR_INVALID_POINTER); 716 722 717 723 /* … … 720 726 if (!pMod->pOps->pfnHashImage) 721 727 return VERR_NOT_SUPPORTED; 722 return pMod->pOps->pfnHashImage(pMod, enmDigest, p szDigest, cbDigest);728 return pMod->pOps->pfnHashImage(pMod, enmDigest, pabHash, cbHash); 723 729 } 724 730 RT_EXPORT_SYMBOL(RTLdrHashImage); -
trunk/src/VBox/Runtime/common/ldr/ldrPE.cpp
r93295 r95612 3160 3160 * @interface_method_impl{RTLDROPS,pfnHashImage} 3161 3161 */ 3162 static DECLCALLBACK(int) rtldrPE_HashImage(PRTLDRMODINTERNAL pMod, RTDIGESTTYPE enmDigest, char *pszDigest, size_t cbDigest)3162 static DECLCALLBACK(int) rtldrPE_HashImage(PRTLDRMODINTERNAL pMod, RTDIGESTTYPE enmDigest, uint8_t *pabHash, size_t cbHash) 3163 3163 { 3164 3164 PRTLDRMODPE pModPe = (PRTLDRMODPE)pMod; … … 3186 3186 { 3187 3187 /* 3188 * Format the digest into as human readable hash string.3188 * Copy out the result. 3189 3189 */ 3190 RT_NOREF(cbHash); /* verified by caller */ 3190 3191 switch (enmDigest) 3191 3192 { 3192 case RTDIGESTTYPE_SHA512: rc = RTSha512ToString(HashRes.abSha512, pszDigest, cbDigest); break;3193 case RTDIGESTTYPE_SHA256: rc = RTSha256ToString(HashRes.abSha256, pszDigest, cbDigest); break;3194 case RTDIGESTTYPE_SHA1: rc = RTSha1ToString(HashRes.abSha1, pszDigest, cbDigest); break;3195 case RTDIGESTTYPE_MD5: rc = RTMd5ToString(HashRes.abMd5, pszDigest, cbDigest); break;3193 case RTDIGESTTYPE_SHA512: memcpy(pabHash, HashRes.abSha512, sizeof(HashRes.abSha512)); break; 3194 case RTDIGESTTYPE_SHA256: memcpy(pabHash, HashRes.abSha256, sizeof(HashRes.abSha256)); break; 3195 case RTDIGESTTYPE_SHA1: memcpy(pabHash, HashRes.abSha1, sizeof(HashRes.abSha1)); break; 3196 case RTDIGESTTYPE_MD5: memcpy(pabHash, HashRes.abMd5, sizeof(HashRes.abMd5)); break; 3196 3197 default: AssertFailedReturn(VERR_INTERNAL_ERROR_3); 3197 3198 }
Note:
See TracChangeset
for help on using the changeset viewer.