mirror of
https://github.com/radareorg/radare2.git
synced 2024-10-09 20:04:49 +00:00
* Fix list and select archs in rabin2 (flags -A and -a)
* Fix memory leak in rabin2 * Fix segfault in r_bin_use_arch()
This commit is contained in:
parent
a95de05ec0
commit
334a6bcfb8
@ -816,14 +816,22 @@ int main(int argc, char **argv) {
|
||||
r_bin_free (bin);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!r_bin_load (bin, file, R_FALSE) && !r_bin_load (bin, file, R_TRUE)) {
|
||||
eprintf ("r_bin: Cannot open '%s'\n", file);
|
||||
return 1;
|
||||
}
|
||||
if (action & ACTION_LISTARCHS && (arch || bits || arch_name)) {
|
||||
|
||||
if (action & ACTION_LISTARCHS) {
|
||||
r_bin_list_archs (bin);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (arch || bits || arch_name) {
|
||||
if (!r_bin_select (bin, arch, bits, arch_name)) {
|
||||
r_bin_list_archs (bin);
|
||||
free (arch);
|
||||
free (arch_name);
|
||||
r_bin_free (bin);
|
||||
return 1;
|
||||
}
|
||||
|
@ -359,16 +359,15 @@ R_API RBin* r_bin_new() {
|
||||
return bin;
|
||||
}
|
||||
|
||||
static RBinInfo userinfo;
|
||||
|
||||
// TODO: handle ARCH and BITS
|
||||
R_API int r_bin_use_arch(RBin *bin, const char *arch, int bits, const char *name) {
|
||||
struct list_head *pos;
|
||||
|
||||
bin->curarch.info = &userinfo;
|
||||
memset (&userinfo, 0, sizeof (userinfo));
|
||||
strncpy (userinfo.arch, arch, sizeof (userinfo.arch));
|
||||
userinfo.bits = bits;
|
||||
if (!bin->curarch.info)
|
||||
bin->curarch.info = R_NEW (RBinInfo);
|
||||
memset (bin->curarch.info, 0, sizeof (RBinInfo));
|
||||
strncpy (bin->curarch.info->arch, arch, R_BIN_SIZEOF_STRINGS);
|
||||
bin->curarch.info->bits = bits;
|
||||
|
||||
list_for_each_prev(pos, &bin->bins) {
|
||||
RBinPlugin *h = list_entry (pos, RBinPlugin, list);
|
||||
|
Loading…
Reference in New Issue
Block a user