diff options
| -rw-r--r-- | pe-relocate.c | 3 | ||||
| -rw-r--r-- | shim.c | 10 |
2 files changed, 8 insertions, 5 deletions
diff --git a/pe-relocate.c b/pe-relocate.c index cb7a02ca..d399cdf1 100644 --- a/pe-relocate.c +++ b/pe-relocate.c @@ -525,7 +525,8 @@ read_header(void *data, unsigned int datasize, return EFI_UNSUPPORTED; } context->FirstSection = (EFI_IMAGE_SECTION_HEADER *)(uintptr_t)tmpsz0; - if ((uint64_t)(context->FirstSection) > (uint64_t)data + datasize) { + if ((uint64_t)(uintptr_t)(context->FirstSection) + > (uint64_t)(uintptr_t)data + datasize) { perror(L"Invalid image\n"); return EFI_UNSUPPORTED; } @@ -644,7 +644,8 @@ verify_buffer_authenticode (char *data, int datasize, if (!sig) break; - if ((uint64_t)&sig[1] > (uint64_t)data + datasize) { + if ((uint64_t)(uintptr_t)&sig[1] + > (uint64_t)(uintptr_t)data + datasize) { perror(L"Certificate size is too large for secruity database"); return EFI_INVALID_PARAMETER; } @@ -716,7 +717,8 @@ verify_buffer_sbat (char *data, int datasize, Section = context->FirstSection; for (i = 0; i < context->NumberOfSections; i++, Section++) { - if ((uint64_t)&Section[1] > (uint64_t)data + datasize) { + if ((uint64_t)(uintptr_t)&Section[1] + > (uintptr_t)(uintptr_t)data + datasize) { perror(L"Section exceeds bounds of image\n"); return EFI_UNSUPPORTED; } @@ -749,8 +751,8 @@ verify_buffer_sbat (char *data, int datasize, SBATSize = Section->SizeOfRawData; dprint(L"sbat section base:0x%lx size:0x%lx\n", SBATBase, SBATSize); - if (checked_add((uint64_t)SBATBase, SBATSize, &boundary) || - (boundary > (uint64_t)data + datasize)) { + if (checked_add((uint64_t)(uintptr_t)SBATBase, SBATSize, &boundary) || + (boundary > (uint64_t)(uintptr_t)data + datasize)) { perror(L"Section exceeds bounds of image\n"); return EFI_UNSUPPORTED; } |
