From: Quentin Young Date: Thu, 4 Aug 2016 16:39:15 +0000 (+0000) Subject: lib: Allow optional whitespace in ranges X-Git-Tag: frr-3.0-branchpoint~129^2~263 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=ef955a80a635f5fb821a640f7e1d7aaac8ec5e5e;p=matthieu%2Ffrr.git lib: Allow optional whitespace in ranges Makes ranges where both endpoints are negative somewhat more readable. Also validate ranges. Signed-off-by: Quentin Young --- diff --git a/lib/command_lex.l b/lib/command_lex.l index 0a997de8df..47723cbf91 100644 --- a/lib/command_lex.l +++ b/lib/command_lex.l @@ -11,7 +11,7 @@ IPV6 X:X::X:X IPV6_PREFIX X:X::X:X\/M VARIABLE [A-Z][-_a-zA-Z:0-9]+ NUMBER [-|+]?[0-9]{1,20} -RANGE \({NUMBER}\-{NUMBER}\) +RANGE \({NUMBER}[ ]?\-[ ]?{NUMBER}\) /* yytext shall be a pointer */ %pointer diff --git a/lib/command_parse.y b/lib/command_parse.y index 9d7432ca40..0ea8744346 100644 --- a/lib/command_parse.y +++ b/lib/command_parse.y @@ -206,7 +206,11 @@ placeholder_token: // get the numbers out $$->min = strtoimax( yylval.string+1, &yylval.string, 10 ); - $$->max = strtoimax( yylval.string+1, &yylval.string, 10 ); + strsep (&yylval.string, "-"); + $$->max = strtoimax( yylval.string, &yylval.string, 10 ); + + // validate range + if ($$->min >= $$->max) yyerror("Invalid range."); free ($1); }