diff --git a/tools/widl/parser.l b/tools/widl/parser.l index 6520ce72e6b..6afc3e7ef19 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -78,7 +78,7 @@ static int attr_token(const char *kw); static warning_list_t *disabled_warnings = NULL; -#define MAX_IMPORT_DEPTH 10 +#define MAX_IMPORT_DEPTH 20 struct { YY_BUFFER_STATE state; char *input_name; @@ -524,6 +524,9 @@ int do_import(char *fname) else if (!(path = wpp_find_include( fname, input_name ))) error_loc("Unable to open include file %s\n", fname); + if (import_stack_ptr == MAX_IMPORT_DEPTH) + error_loc("Exceeded max import depth\n"); + import_stack[ptr].temp_name = temp_name; import_stack[ptr].input_name = input_name; import_stack[ptr].line_number = line_number;