summaryrefslogtreecommitdiff
path: root/src/logic/pe_image_meta_data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/logic/pe_image_meta_data.c')
-rw-r--r--src/logic/pe_image_meta_data.c17
1 files changed, 8 insertions, 9 deletions
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++;
+ }
}