summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pe-relocate.c3
-rw-r--r--shim.c10
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;
}
diff --git a/shim.c b/shim.c
index 7eead78a..a0379721 100644
--- a/shim.c
+++ b/shim.c
@@ -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;
}