summaryrefslogtreecommitdiff
path: root/pe-relocate.c
diff options
context:
space:
mode:
Diffstat (limited to 'pe-relocate.c')
-rw-r--r--pe-relocate.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/pe-relocate.c b/pe-relocate.c
index bde71729..b436d3ec 100644
--- a/pe-relocate.c
+++ b/pe-relocate.c
@@ -368,7 +368,8 @@ image_is_loadable(EFI_IMAGE_OPTIONAL_HEADER_UNION *PEHdr)
*/
EFI_STATUS
read_header(void *data, unsigned int datasize,
- PE_COFF_LOADER_IMAGE_CONTEXT *context)
+ PE_COFF_LOADER_IMAGE_CONTEXT *context,
+ bool check_secdir)
{
EFI_IMAGE_DOS_HEADER *DosHdr = data;
EFI_IMAGE_OPTIONAL_HEADER_UNION *PEHdr = data;
@@ -542,9 +543,12 @@ read_header(void *data, unsigned int datasize,
return EFI_UNSUPPORTED;
}
- if (context->SecDir->VirtualAddress > datasize ||
- (context->SecDir->VirtualAddress == datasize &&
- context->SecDir->Size > 0)) {
+ if (check_secdir &&
+ (context->SecDir->VirtualAddress > datasize ||
+ (context->SecDir->VirtualAddress == datasize &&
+ context->SecDir->Size > 0))) {
+ dprint(L"context->SecDir->VirtualAddress:0x%llx context->SecDir->Size:0x%llx datasize:0x%llx\n",
+ context->SecDir->VirtualAddress, context->SecDir->Size, datasize);
perror(L"Malformed security header\n");
return EFI_INVALID_PARAMETER;
}