Safeguard against stack overflow, when wrongly introduce a circular
parameter dependency
This commit is contained in:
parent
20711c1c25
commit
712ed8ac77
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue