From a4dc39beb4c5678476d40e4e13f0a79d45145460 Mon Sep 17 00:00:00 2001 From: Matthias Blaicher Date: Sat, 27 Oct 2012 16:00:12 +0200 Subject: [PATCH] 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 --- src/rtos/linux.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rtos/linux.c b/src/rtos/linux.c index ba65558e..3f1b214b 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; -- 2.39.5