diff options
author | midipix <writeonce@midipix.org> | 2025-06-07 16:59:44 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2025-06-07 16:59:44 +0000 |
commit | f6a85b37d49ff91ca871f797afaad0ab9da95c6c (patch) | |
tree | 31c4193baebc08eab19d48bc4d9f4cfe5bd20972 | |
parent | 854fb8e2544c8664e080666b7cad935640eb2004 (diff) | |
download | perk-f6a85b37d49ff91ca871f797afaad0ab9da95c6c.tar.bz2 perk-f6a85b37d49ff91ca871f797afaad0ab9da95c6c.tar.xz |
struct pe_meta_coff_file_hdr: .cfh_num_of_syms ==> .cfh_size_of_sym_tbl.
-rw-r--r-- | include/perk/perk_meta.h | 2 | ||||
-rw-r--r-- | src/logic/pe_image_meta_data.c | 4 | ||||
-rw-r--r-- | src/output/pe_output_image_symbols.c | 4 | ||||
-rw-r--r-- | src/reader/pe_read_coff_header.c | 8 |
4 files changed, 12 insertions, 6 deletions
diff --git a/include/perk/perk_meta.h b/include/perk/perk_meta.h index b686d13..fca10ad 100644 --- a/include/perk/perk_meta.h +++ b/include/perk/perk_meta.h @@ -76,7 +76,7 @@ struct pe_meta_coff_file_hdr { uint16_t cfh_num_of_sections; uint32_t cfh_time_date_stamp; uint32_t cfh_ptr_to_sym_tbl; - uint32_t cfh_num_of_syms; + uint32_t cfh_size_of_sym_tbl; uint16_t cfh_size_of_opt_hdr; uint16_t cfh_characteristics; uint32_t cfh_ptr_to_str_tbl; diff --git a/src/logic/pe_image_meta_data.c b/src/logic/pe_image_meta_data.c index 9753487..ad2098e 100644 --- a/src/logic/pe_image_meta_data.c +++ b/src/logic/pe_image_meta_data.c @@ -366,11 +366,11 @@ int pe_meta_get_image_meta( } mark = (const unsigned char *)base + m->m_coff.cfh_ptr_to_sym_tbl; - mark += m->m_coff.cfh_num_of_syms * sizeof(struct pe_raw_coff_symbol); + mark += m->m_coff.cfh_size_of_sym_tbl; if (m->m_coff.cfh_ptr_to_sym_tbl) { m->m_coff.cfh_ptr_to_str_tbl = m->m_coff.cfh_ptr_to_sym_tbl; - m->m_coff.cfh_ptr_to_str_tbl += m->m_coff.cfh_num_of_syms * sizeof(struct pe_raw_coff_symbol); + m->m_coff.cfh_ptr_to_str_tbl += m->m_coff.cfh_size_of_sym_tbl; m->m_coff.cfh_size_of_str_tbl = pe_read_long(mark); } diff --git a/src/output/pe_output_image_symbols.c b/src/output/pe_output_image_symbols.c index 6c8f4dc..ca4445c 100644 --- a/src/output/pe_output_image_symbols.c +++ b/src/output/pe_output_image_symbols.c @@ -20,6 +20,7 @@ int pe_output_image_symbols( const struct pe_image_meta * meta) { unsigned i; + unsigned nrecs; int fdout; char * mark; struct pe_raw_coff_symbol * symtbl; @@ -27,6 +28,7 @@ int pe_output_image_symbols( const char * dash = ""; fdout = pe_driver_fdout(dctx); + nrecs = meta->m_coff.cfh_size_of_sym_tbl / sizeof(struct pe_raw_coff_symbol); if (dctx->cctx->fmtflags & PERK_PRETTY_YAML) { if (pe_dprintf(fdout,"symbols:\n") < 0) @@ -38,7 +40,7 @@ int pe_output_image_symbols( mark = (char *)meta->r_image.map_addr; symtbl = (struct pe_raw_coff_symbol *)(mark + meta->m_coff.cfh_ptr_to_sym_tbl); - for (i=0; i<meta->m_coff.cfh_num_of_syms; i++) { + for (i=0; i<nrecs; i++) { pe_read_coff_symbol( &symtbl[i],&symrec, &meta->m_coff,meta->r_image.map_addr); diff --git a/src/reader/pe_read_coff_header.c b/src/reader/pe_read_coff_header.c index 9894017..032a995 100644 --- a/src/reader/pe_read_coff_header.c +++ b/src/reader/pe_read_coff_header.c @@ -28,7 +28,9 @@ int pe_read_coff_header(const struct pe_raw_coff_image_hdr * p, struct pe_meta_c m->cfh_time_date_stamp = pe_read_long(p->cfh_time_date_stamp); m->cfh_ptr_to_sym_tbl = pe_read_long(p->cfh_ptr_to_sym_tbl); - m->cfh_num_of_syms = pe_read_long(p->cfh_num_of_sym_recs); + + m->cfh_size_of_sym_tbl = pe_read_long(p->cfh_num_of_sym_recs); + m->cfh_size_of_sym_tbl *= sizeof(struct pe_raw_coff_symbol); m->cfh_size_of_opt_hdr = pe_read_short(p->cfh_size_of_opt_hdr); m->cfh_characteristics = pe_read_short(p->cfh_characteristics); @@ -99,7 +101,9 @@ int pe_read_object_header(const struct pe_raw_coff_object_hdr * p, struct pe_met m->cfh_time_date_stamp = pe_read_long(p->cfh_time_date_stamp); m->cfh_ptr_to_sym_tbl = pe_read_long(p->cfh_ptr_to_sym_tbl); - m->cfh_num_of_syms = pe_read_long(p->cfh_num_of_sym_recs); + + m->cfh_size_of_sym_tbl = pe_read_long(p->cfh_num_of_sym_recs); + m->cfh_size_of_sym_tbl *= sizeof(struct pe_raw_coff_symbol); m->cfh_size_of_opt_hdr = pe_read_short(p->cfh_size_of_opt_hdr); m->cfh_characteristics = pe_read_short(p->cfh_characteristics); |