From b6bb33077411781ae7774b386c874244e4f3ba9a Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 15 Jun 2025 16:12:45 +0000 Subject: pe_meta_get_image_meta(): fix handling of the padding base relocation block. --- src/logic/pe_image_meta_data.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/logic/pe_image_meta_data.c b/src/logic/pe_image_meta_data.c index 3f68819..e4e73a0 100644 --- a/src/logic/pe_image_meta_data.c +++ b/src/logic/pe_image_meta_data.c @@ -601,17 +601,16 @@ int pe_meta_get_image_meta( b.dh_rva = pe_read_long(r->blk_rva); b.dh_size = pe_read_long(r->blk_size); - if (b.dh_size <= offsetof(struct pe_raw_base_reloc_block,blk_data)) - return pe_free_image_meta_impl( - m,PERK_CUSTOM_ERROR( - dctx, - PERK_ERR_IMAGE_MALFORMED)); + if ((b.dh_rva == 0) && (b.dh_size == 0)) { + mark = cap; - mark += b.dh_size; - b.dh_size -= offsetof(struct pe_raw_base_reloc_block,blk_data); + } else { + mark += b.dh_size; + b.dh_size -= offsetof(struct pe_raw_base_reloc_block,blk_data); - m->m_stats.t_nrelocs += b.dh_size / sizeof(uint16_t); - m->m_stats.t_nrelblks++; + m->m_stats.t_nrelocs += b.dh_size / sizeof(uint16_t); + m->m_stats.t_nrelblks++; + } } -- cgit v1.2.3