Revert memory leak fix for relocs (#4463)
This commit is contained in:
parent
63d6d93195
commit
a7a29f110d
5 changed files with 12 additions and 9 deletions
|
|
@ -203,8 +203,13 @@ RZ_API void rz_bin_reloc_free(RZ_NULLABLE RzBinReloc *reloc) {
|
|||
if (!reloc) {
|
||||
return;
|
||||
}
|
||||
rz_bin_import_free(reloc->import);
|
||||
rz_bin_symbol_free(reloc->symbol);
|
||||
/**
|
||||
* TODO: leak in bin_elf, but it will cause double free in bin_pe if free here,
|
||||
* Because in the bin_elf implementation RzBinObject->imports and RzBinObject->relocs->imports
|
||||
* are two pieces of data, but they are linked to each other in bin_pe
|
||||
*/
|
||||
// rz_bin_import_free(reloc->import);
|
||||
// rz_bin_symbol_free(reloc->symbol);
|
||||
free(reloc);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ RzPVector /*<RzBinImport *>*/ *PE_(rz_bin_mdmp_pe_get_imports)(struct PE_(rz_bin
|
|||
offset -= pe_bin->vaddr;
|
||||
}
|
||||
rel->additive = 0;
|
||||
rel->import = rz_bin_import_clone(ptr);
|
||||
rel->import = ptr;
|
||||
rel->addend = 0;
|
||||
rel->vaddr = offset + pe_bin->vaddr;
|
||||
rel->paddr = imports[i].paddr + pe_bin->paddr;
|
||||
|
|
|
|||
|
|
@ -408,11 +408,9 @@ static RzPVector /*<RzBinReloc *>*/ *relocs(RzBinFile *bf) {
|
|||
free(ptr);
|
||||
break;
|
||||
}
|
||||
ptr->import = rz_bin_import_clone(imp);
|
||||
ptr->import = imp;
|
||||
} else if (reloc->ord >= 0 && reloc->ord < rz_pvector_len(&bin->imports_by_ord)) {
|
||||
RzBinImport *imp = NULL;
|
||||
imp = rz_pvector_at(&bin->imports_by_ord, reloc->ord);
|
||||
ptr->import = rz_bin_import_clone(imp);
|
||||
ptr->import = rz_pvector_at(&bin->imports_by_ord, reloc->ord);
|
||||
}
|
||||
ptr->addend = reloc->addend;
|
||||
ptr->vaddr = reloc->addr;
|
||||
|
|
|
|||
|
|
@ -474,7 +474,7 @@ static RzPVector /*<RzBinImport *>*/ *imports(RzBinFile *bf) {
|
|||
rel->type = RZ_BIN_RELOC_32;
|
||||
#endif
|
||||
rel->additive = 0;
|
||||
rel->import = rz_bin_import_clone(ptr);
|
||||
rel->import = ptr;
|
||||
rel->addend = 0;
|
||||
{
|
||||
ut8 addr[4];
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ vaddr paddr type name
|
|||
0x800004f4 0x00000234 SET_32 msvcrt_Ordinal_1268
|
||||
nth vaddr bind type lib name
|
||||
------------------------------------------------
|
||||
284 0x00401048 NONE FUNC kernel32 Ordinal_284
|
||||
284 ---------- NONE FUNC kernel32 FindAtomW
|
||||
1268 0x00401034 NONE FUNC msvcrt Ordinal_1268
|
||||
EOF
|
||||
RUN
|
||||
|
|
|
|||
Loading…
Reference in a new issue