From: Matthias Blaicher Date: Sat, 27 Oct 2012 14:00:12 +0000 (+0200) Subject: rtos: Fix wrong allocation in linux_get_symbol_list_to_lookup X-Git-Url: https://git.gag.com/?p=fw%2Fopenocd;a=commitdiff_plain;h=a4dc39beb4c5678476d40e4e13f0a79d45145460 rtos: Fix wrong allocation in linux_get_symbol_list_to_lookup linux_get_symbol_list_to_lookup allocates to few memory. On 64 bit systems the error did not show due to char* being twice its size, leaving accidentally enough space. This patch makes linux_get_symbol_list_to_lookup behave identical to all other RTOS. Change-Id: I290ea241fb20b65585c8be14609a92fdbd2a307d Signed-off-by: Matthias Blaicher Reviewed-on: http://openocd.zylin.com/934 Tested-by: jenkins Reviewed-by: Peter Stuge --- diff --git a/src/rtos/linux.c b/src/rtos/linux.c index ba65558e7..3f1b214bc 100644 --- a/src/rtos/linux.c +++ b/src/rtos/linux.c @@ -28,8 +28,8 @@ #include "target/target.h" #include "target/target_type.h" #include "helper/log.h" +#include "helper/types.h" #include "rtos.h" -#include "helper/log.h" #include "rtos_standard_stackings.h" #include #include "server/gdb_server.h" @@ -326,9 +326,9 @@ static int linux_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[]) { unsigned int i; *symbol_list = (symbol_table_elem_t *) - malloc(sizeof(symbol_table_elem_t) / sizeof(char *)); + malloc(sizeof(symbol_table_elem_t) * ARRAY_SIZE(linux_symbol_list)); - for (i = 0; i < sizeof(linux_symbol_list) / sizeof(char *); i++) + for (i = 0; i < ARRAY_SIZE(linux_symbol_list); i++) (*symbol_list)[i].symbol_name = linux_symbol_list[i]; return 0;