Safeguard against stack overflow, when wrongly introduce a circular

parameter dependency
This commit is contained in:
Holger Vogt 2023-02-03 11:33:36 +01:00
parent 20711c1c25
commit 712ed8ac77
1 changed files with 13 additions and 0 deletions

View File

@ -4534,6 +4534,18 @@ static int inp_get_param_level(
int param_num, struct dependency *deps, int num_params)
{
int i, k, l, level = 0;
static int recounter = 0;
recounter++;
if (recounter > 1000) { /* magic number 1000: if larger, stack overflow occurs */
fprintf(stderr,
"ERROR: A level depth greater 1000 for dependent parameters is not supported!\n");
fprintf(stderr,
" You probably do have a circular parameter dependency at line\n");
fprintf(stderr,
" %s\n", deps[param_num].card->line);
controlled_exit(EXIT_FAILURE);
}
if (deps[param_num].level != -1)
return deps[param_num].level;
@ -4558,6 +4570,7 @@ static int inp_get_param_level(
}
deps[param_num].level = level;
recounter = 0;
return level;
}