diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-07-04 12:39:01 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-07-04 12:39:01 (GMT) |
commit | ade3ee4fd3b78e96deb08210838643969f2f6699 (patch) | |
tree | 09003a6f4ac00c09560de9ea9a91c125a7b14f68 /plugins/elf | |
parent | a0463dfa8fe232d01ea925668f393d7507fa787b (diff) |
Updated the API for building symbol labels.
Diffstat (limited to 'plugins/elf')
-rw-r--r-- | plugins/elf/symbols.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/plugins/elf/symbols.c b/plugins/elf/symbols.c index 949e495..90b9488 100644 --- a/plugins/elf/symbols.c +++ b/plugins/elf/symbols.c @@ -1185,7 +1185,7 @@ static bool do_elf_relocation_renaming(GElfLoading *loading, GElfFormat *format, uint64_t index; /* Indice du symbole concerné */ char *name; /* Nouvelle désignation */ #ifndef NDEBUG - const char *label; /* Etiquette courante */ + char *label; /* Etiquette courante */ #endif result = false; @@ -1225,11 +1225,17 @@ static bool do_elf_relocation_renaming(GElfLoading *loading, GElfFormat *format, label = g_binary_symbol_get_label(symbol); - if (strncmp(label, "sub_", 4) != 0 && strncmp(label, "loc_", 4) != 0) + if (label != NULL) { - if (strncmp(name, label, strlen(label)) != 0) - g_binary_format_add_error(G_BIN_FORMAT(format), BFE_SPECIFICATION, get_mrange_addr(range), - _("Mismatch detected in the ELF symbol address")); + if (strncmp(label, "sub_", 4) != 0 && strncmp(label, "loc_", 4) != 0) + { + if (strncmp(name, label, strlen(label)) != 0) + g_binary_format_add_error(G_BIN_FORMAT(format), BFE_SPECIFICATION, get_mrange_addr(range), + _("Mismatch detected in the ELF symbol address")); + } + + free(label); + } #endif |