diff options
author | midipix <writeonce@midipix.org> | 2025-06-12 17:24:50 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2025-06-12 17:37:10 +0000 |
commit | 60ec6878b0346397edeeafb7b9abe6ed3a057f16 (patch) | |
tree | 4df26d679dc1b8001a06d66069034d662b290f2b | |
parent | a03a54dd8c987741a1c3f63b7de18f335ac20982 (diff) | |
download | perk-60ec6878b0346397edeeafb7b9abe6ed3a057f16.tar.bz2 perk-60ec6878b0346397edeeafb7b9abe6ed3a057f16.tar.xz |
struct pe_image_meta: added and integrated the .m_symvec_symidx member.
-rw-r--r-- | include/perk/perk.h | 1 | ||||
-rw-r--r-- | src/logic/pe_image_meta_data.c | 9 |
2 files changed, 9 insertions, 1 deletions
diff --git a/include/perk/perk.h b/include/perk/perk.h index 001f26c..a129c2a 100644 --- a/include/perk/perk.h +++ b/include/perk/perk.h @@ -186,6 +186,7 @@ struct pe_image_meta { struct pe_meta_coff_symbol ** m_symvec_crc32; struct pe_meta_coff_symbol ** m_symvec_crc64; + struct pe_meta_coff_symbol ** m_symvec_symidx; struct pe_meta_export_hdr m_edata; struct pe_meta_import_hdr * m_idata; diff --git a/src/logic/pe_image_meta_data.c b/src/logic/pe_image_meta_data.c index b2255d7..b789100 100644 --- a/src/logic/pe_image_meta_data.c +++ b/src/logic/pe_image_meta_data.c @@ -28,6 +28,7 @@ static int pe_free_image_meta_impl(struct pe_image_meta * meta, int ret) free(meta->m_symvec_crc32); free(meta->m_symvec_crc64); + free(meta->m_symvec_symidx); free(meta->m_idata); free(meta->m_symtbl); @@ -404,11 +405,17 @@ int pe_meta_get_image_meta( } - if ((nrecs = m->m_coff.cfh_size_of_sym_tbl/sizeof(struct pe_raw_coff_symbol))) + if ((nrecs = m->m_coff.cfh_size_of_sym_tbl/sizeof(struct pe_raw_coff_symbol))) { if (!(m->m_symtbl = calloc(nrecs+1,sizeof(struct pe_meta_coff_symbol)))) return PERK_SYSTEM_ERROR(dctx); + if (!(m->m_symvec_symidx = calloc(nrecs,sizeof(struct pe_meta_coff_symbol *)))) + return PERK_SYSTEM_ERROR(dctx); + } + for (i=0,symrec=m->m_symtbl; i<nrecs; i++,symrec++) { + m->m_symvec_symidx[i] = symrec; + pe_read_coff_symbol( &m->r_symtbl[i],symrec, &m->m_coff,base); |