From ef955a80a635f5fb821a640f7e1d7aaac8ec5e5e Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Thu, 4 Aug 2016 16:39:15 +0000 Subject: [PATCH] lib: Allow optional whitespace in ranges Makes ranges where both endpoints are negative somewhat more readable. Also validate ranges. Signed-off-by: Quentin Young --- lib/command_lex.l | 2 +- lib/command_parse.y | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) 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); } -- 2.39.5