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 /src/logic/pe_image_meta_data.c | |
parent | a03a54dd8c987741a1c3f63b7de18f335ac20982 (diff) | |
download | perk-60ec6878b0346397edeeafb7b9abe6ed3a057f16.tar.bz2 perk-60ec6878b0346397edeeafb7b9abe6ed3a057f16.tar.xz |
struct pe_image_meta: added and integrated the .m_symvec_symidx member.
Diffstat (limited to 'src/logic/pe_image_meta_data.c')
-rw-r--r-- | src/logic/pe_image_meta_data.c | 9 |
1 files changed, 8 insertions, 1 deletions
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); |