Fixed regressions
This commit is contained in:
parent
8cfc86a82e
commit
53e1fee6c5
6 changed files with 14 additions and 2 deletions
|
|
@ -20,7 +20,7 @@
|
|||
} while (0)
|
||||
|
||||
static const char *get_mangled_name(const char *mangled) {
|
||||
if (!strncmp(mangled, "__OBJC_$", strlen("__OBJC_$"))) {
|
||||
if (!mangled || !strncmp(mangled, "__OBJC_$", strlen("__OBJC_$"))) {
|
||||
// this is never a mangled name
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ RZ_IPI void rz_bin_object_free(RzBinObject *o) {
|
|||
rz_list_free(o->sections);
|
||||
rz_list_free(o->symbols);
|
||||
rz_list_free(o->vfiles);
|
||||
rz_list_free(o->resources);
|
||||
for (ut32 i = 0; i < RZ_BIN_SPECIAL_SYMBOL_LAST; i++) {
|
||||
free(o->binsym[i]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ static void process_class_field(RzBinObject *o, RzBinClassField *field) {
|
|||
}
|
||||
|
||||
static void process_handle_class(RzBinObject *o, RzBinClass *klass) {
|
||||
if (!klass->name) {
|
||||
klass->name = rz_str_new("unknown_class");
|
||||
}
|
||||
RzBinClass *found = ht_pp_find(o->name_to_class_object, klass->name, NULL);
|
||||
if (!found) {
|
||||
ht_pp_insert(o->name_to_class_object, klass->name, klass);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ RZ_IPI void rz_bin_set_and_process_file(RzBinFile *bf, RzBinObject *o) {
|
|||
|
||||
sdb_free(o->kv);
|
||||
if (!plugin->get_sdb || !(o->kv = plugin->get_sdb(bf))) {
|
||||
o->kv = NULL;
|
||||
o->kv = sdb_new0();
|
||||
}
|
||||
|
||||
rz_list_free(o->mem);
|
||||
|
|
|
|||
|
|
@ -49,6 +49,10 @@ RZ_IPI void rz_bin_process_imports(RzBinFile *bf, RzBinObject *o, const RzDemang
|
|||
RzListIter *it;
|
||||
RzBinImport *element;
|
||||
rz_list_foreach (o->imports, it, element) {
|
||||
if (!element->name) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// demangle the import
|
||||
if (!rz_bin_demangle_import(element, demangler) ||
|
||||
!language_cb) {
|
||||
|
|
|
|||
|
|
@ -66,6 +66,10 @@ static void process_handle_symbol(RzBinSymbol *symbol, RzBinObject *o, const RzD
|
|||
// rebase physical address
|
||||
symbol->paddr += o->opts.loadaddr;
|
||||
|
||||
if (!symbol->name) {
|
||||
return;
|
||||
}
|
||||
|
||||
// add symbol to the 'import' map[name]symbol
|
||||
if (symbol->is_imported && RZ_STR_ISNOTEMPTY(symbol->name)) {
|
||||
if (!ht_pp_find(o->import_name_symbols, symbol->name, NULL)) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue