Fixed regressions

This commit is contained in:
wargio 2023-06-02 08:35:05 +08:00 committed by Anton Kochkov
parent 8cfc86a82e
commit 53e1fee6c5
6 changed files with 14 additions and 2 deletions

View file

@ -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;
}

View file

@ -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]);
}

View file

@ -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);

View file

@ -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);

View file

@ -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) {

View file

@ -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)) {