Fix UB and memory leaks in dump.c

This commit is contained in:
mid-kid 2024-11-14 18:48:20 +01:00
parent 20566600fa
commit 5f7df333d8

View File

@ -56,12 +56,13 @@ struct pe_rsrc_string {
uint16_t read_u16(const unsigned char *mem) uint16_t read_u16(const unsigned char *mem)
{ {
return mem[0] << 0 | mem[1] << 8; return (uint16_t)mem[0] << 0 | (uint16_t)mem[1] << 8;
} }
uint32_t read_u32(const unsigned char *mem) uint32_t read_u32(const unsigned char *mem)
{ {
return mem[0] << 0 | mem[1] << 8 | mem[2] << 16 | mem[3] << 24; return (uint32_t)mem[0] << 0 | (uint32_t)mem[1] << 8 |
(uint32_t)mem[2] << 16 | (uint32_t)mem[3] << 24;
} }
bool pe_open_read_header(struct pe_file *file) bool pe_open_read_header(struct pe_file *file)
@ -263,11 +264,13 @@ bool pe_read_export_table(struct pe_file *file, struct pe_export *out)
if (fread(name_tab, 4 * name_num, 1, file->f) != 1) goto error; if (fread(name_tab, 4 * name_num, 1, file->f) != 1) goto error;
free(func_tab); free(func_tab);
free(name_tab); free(name_tab);
free(ords_tab);
return true; return true;
error: error:
free(func_tab); free(func_tab);
free(name_tab); free(name_tab);
free(ords_tab);
return false; return false;
} }