From 40e6c98dfc46a7ce7bf5e029c7c69491f8d8c58f Mon Sep 17 00:00:00 2001 From: Antonio Borneo Date: Thu, 22 May 2025 02:02:19 +0200 Subject: [PATCH] helper: configuration: check for empty search dirs The function find_file() is supposed to be called when the search dirs in 'script_search_dirs' has already been populated. This is not the case when the command 'ocd_find' is used in one of the embedded scripts 'startup.tcl'. It then triggers SIGSEGV. Check for 'script_search_dirs' and eventually skip searching in the dirs. Change-Id: I9e75a8739c94de72041fb64487910d60dffcb2bd Signed-off-by: Antonio Borneo Reviewed-on: https://review.openocd.org/c/openocd/+/8931 Tested-by: jenkins --- src/helper/configuration.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/helper/configuration.c b/src/helper/configuration.c index 16732eb3d..447b0dfef 100644 --- a/src/helper/configuration.c +++ b/src/helper/configuration.c @@ -71,17 +71,18 @@ char *find_file(const char *file) full_path = alloc_printf("%s", file); fp = fopen(full_path, mode); - while (!fp) { - free(full_path); - full_path = NULL; - dir = *search_dirs++; + if (script_search_dirs) + while (!fp) { + free(full_path); + full_path = NULL; + dir = *search_dirs++; - if (!dir) - break; + if (!dir) + break; - full_path = alloc_printf("%s/%s", dir, file); - fp = fopen(full_path, mode); - } + full_path = alloc_printf("%s/%s", dir, file); + fp = fopen(full_path, mode); + } if (fp) { fclose(fp);