From 083ebe4832a695b225755869738ab3ef14009e15 Mon Sep 17 00:00:00 2001 From: Nibble Date: Thu, 27 May 2010 19:58:54 +0200 Subject: [PATCH] * r_core - Fix segfault in r_core * r_bin - Minor fixup in r_bin_load - Move plugin pointers to r_bin.h --- libr/bin/bin.c | 11 +---------- libr/core/libs.c | 2 +- libr/include/r_bin.h | 12 +++++++++++- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/libr/bin/bin.c b/libr/bin/bin.c index bdad144c55..6a0919d9de 100644 --- a/libr/bin/bin.c +++ b/libr/bin/bin.c @@ -12,16 +12,6 @@ #include #include "../config.h" -/* plugin pointers */ -extern RBinPlugin r_bin_plugin_elf; -extern RBinPlugin r_bin_plugin_elf64; -extern RBinPlugin r_bin_plugin_pe; -extern RBinPlugin r_bin_plugin_pe64; -extern RBinPlugin r_bin_plugin_mach0; -extern RBinPlugin r_bin_plugin_mach064; -extern RBinPlugin r_bin_plugin_java; -extern RBinPlugin r_bin_plugin_dummy; - static RBinPlugin *bin_static_plugins[] = { R_BIN_STATIC_PLUGINS }; static RList* get_strings(RBin *bin, int min) { @@ -142,6 +132,7 @@ R_API int r_bin_load(RBin *bin, const char *file, const char *plugin_name) { if (!bin || !file) return R_FALSE; bin->file = r_file_abspath (file); + bin->cur = NULL; list_for_each (pos, &bin->bins) { RBinPlugin *h = list_entry (pos, RBinPlugin, list); if ((plugin_name && !strcmp (h->name, plugin_name)) || diff --git a/libr/core/libs.c b/libr/core/libs.c index f87004e788..b790d72dc2 100644 --- a/libr/core/libs.c +++ b/libr/core/libs.c @@ -104,7 +104,6 @@ static int __lib_bin_dt(struct r_lib_plugin_t *pl, void *p, void *u) { return R_ R_API int r_core_loadlibs_init(struct r_core_t *core) { /* initialize handlers */ - core->lib = r_lib_new ("radare_plugin"); r_lib_add_handler (core->lib, R_LIB_TYPE_IO, "io plugins", &__lib_io_cb, &__lib_io_dt, core); r_lib_add_handler (core->lib, R_LIB_TYPE_CMD, "cmd plugins", @@ -130,6 +129,7 @@ R_API int r_core_loadlibs(struct r_core_t *core) { /* TODO: all those default plugin paths should be defined in r_lib */ char *homeplugindir = r_str_home (".radare2/plugins"); static int singleton = R_TRUE; + core->lib = r_lib_new ("radare_plugin"); if (singleton) { r_core_loadlibs_init (core); singleton = R_FALSE; diff --git a/libr/include/r_bin.h b/libr/include/r_bin.h index 1e8bba8d85..1dcd931b1c 100644 --- a/libr/include/r_bin.h +++ b/libr/include/r_bin.h @@ -169,6 +169,16 @@ R_API char *r_bin_meta_get_source_line(RBin *bin, ut64 addr); R_API ut64 r_bin_wr_scn_resize(RBin *bin, const char *name, ut64 size); R_API int r_bin_wr_rpath_del(RBin *bin); R_API int r_bin_wr_output(RBin *bin, const char *filename); -#endif + +/* plugin pointers */ +extern RBinPlugin r_bin_plugin_elf; +extern RBinPlugin r_bin_plugin_elf64; +extern RBinPlugin r_bin_plugin_pe; +extern RBinPlugin r_bin_plugin_pe64; +extern RBinPlugin r_bin_plugin_mach0; +extern RBinPlugin r_bin_plugin_mach064; +extern RBinPlugin r_bin_plugin_java; +extern RBinPlugin r_bin_plugin_dummy; #endif +#endif