Skip to content

Commit aa710ce

Browse files
committed
genksyms: restrict direct-declarator to take one parameter-type-list
Similar to the previous commit, this change makes the parser logic a little more accurate. Currently, genksyms accepts the following invalid code: struct foo { int (*callback)(int)(int)(int); }; A direct-declarator should not recursively absorb multiple ( parameter-type-list ) constructs. In the example above, (*callback) should be followed by at most one (int). Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Acked-by: Nicolas Schier <n.schier@avm.de>
1 parent c2f1846 commit aa710ce

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

scripts/genksyms/parse.y

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -331,12 +331,16 @@ nested_declarator:
331331
;
332332

333333
direct_nested_declarator:
334-
IDENT { $$ = $1; dont_want_type_specifier = false; }
335-
| direct_nested_declarator '(' parameter_declaration_clause ')'
334+
direct_nested_declarator1
335+
| direct_nested_declarator1 '(' parameter_declaration_clause ')'
336336
{ $$ = $4; }
337-
| direct_nested_declarator '(' error ')'
337+
;
338+
339+
direct_nested_declarator1:
340+
IDENT { $$ = $1; dont_want_type_specifier = false; }
341+
| direct_nested_declarator1 '(' error ')'
338342
{ $$ = $4; }
339-
| direct_nested_declarator BRACKET_PHRASE
343+
| direct_nested_declarator1 BRACKET_PHRASE
340344
{ $$ = $2; }
341345
| '(' nested_declarator ')'
342346
{ $$ = $3; }

0 commit comments

Comments
 (0)