From 2c3a0ca558c7ba01a262a45be1092e29ff45b157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Tue, 23 Oct 2018 14:16:38 +0200 Subject: [PATCH] [poincare] Prevent parsing of too long symbol/function names This prevents the user from doing "3->tooLongFunctionName(x)" --- poincare/src/expression_parser.y | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/poincare/src/expression_parser.y b/poincare/src/expression_parser.y index cb334faaf..ed133fe16 100644 --- a/poincare/src/expression_parser.y +++ b/poincare/src/expression_parser.y @@ -115,10 +115,13 @@ number : DIGITS { $$ = $1; } | DIGITS DIGITS { YYERROR; } ; -func : SYMBOL LEFT_PARENTHESIS lstData RIGHT_PARENTHESIS %prec SYMBOL_TO_FUNCTION { if ($3.numberOfChildren() != 1) { YYERROR; } ; $$ = Function(static_cast($1).name(), $3.childAtIndex(0)); } +short_symb : SYMBOL { if (strlen(static_cast($1).name()) +1 > SymbolAbstract::k_maxNameSize) { YYERROR; } ; $$ = $1; } + ; + +func : short_symb LEFT_PARENTHESIS lstData RIGHT_PARENTHESIS %prec SYMBOL_TO_FUNCTION { if ($3.numberOfChildren() != 1) { YYERROR; } ; $$ = Function(static_cast($1).name(), $3.childAtIndex(0)); } ; -symb : SYMBOL { $$ = $1; } +symb : short_symb { $$ = $1; } ; term : TERM { $$ = $1; }