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
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);