]> www.infradead.org Git - users/borneoa/openocd-next.git/commitdiff
helper: configuration: check for empty search dirs
authorAntonio Borneo <borneo.antonio@gmail.com>
Thu, 22 May 2025 00:02:19 +0000 (02:02 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 7 Jun 2025 09:58:53 +0000 (09:58 +0000)
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 <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8931
Tested-by: jenkins
src/helper/configuration.c

index 16732eb3dd9f187554d964957b30409f5abf597c..447b0dfefae560adb63bdb4914d743adfb99d5a0 100644 (file)
@@ -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);