diff options
author | Guillaume Maudoux <layus.on@gmail.com> | 2016-06-24T13·30+0200 |
---|---|---|
committer | Guillaume Maudoux <layus.on@gmail.com> | 2016-11-27T16·48+0100 |
commit | e4b82af38711126bb2a531451a28b062937a5a81 (patch) | |
tree | 2ca61eab017ccfb8d3dc18d75568931b71b63553 /src/libexpr | |
parent | 7ee43df8622cc0589d54248fb44cebe1c1d991d2 (diff) |
Improve error message on trailing path slashes
Diffstat (limited to 'src/libexpr')
-rw-r--r-- | src/libexpr/lexer.l | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l index 3ac7ce723cb3..56d8456c0001 100644 --- a/src/libexpr/lexer.l +++ b/src/libexpr/lexer.l @@ -87,8 +87,8 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s) ID [a-zA-Z\_][a-zA-Z0-9\_\'\-]* INT [0-9]+ FLOAT (([1-9][0-9]*\.[0-9]*)|(0?\.[0-9]+))([Ee][+-]?[0-9]+)? -PATH [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+ -HPATH \~(\/[a-zA-Z0-9\.\_\-\+]+)+ +PATH [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+\/? +HPATH \~(\/[a-zA-Z0-9\.\_\-\+]+)+\/? SPATH \<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\> URI [a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']+ @@ -182,8 +182,16 @@ or { return OR_KW; } <INITIAL,INSIDE_DOLLAR_CURLY>{ -{PATH} { yylval->path = strdup(yytext); return PATH; } -{HPATH} { yylval->path = strdup(yytext); return HPATH; } +{PATH} { if (yytext[yyleng-1] == '/') + throw ParseError(format("Invalid path '%1%'; trailing slashes are not allowed in paths") % yytext); + yylval->path = strdup(yytext); + return PATH; + } +{HPATH} { if (yytext[yyleng-1] == '/') + throw ParseError(format("Invalid path '%1%'; trailing slashes are not allowed in paths") % yytext); + yylval->path = strdup(yytext); + return HPATH; + } {SPATH} { yylval->path = strdup(yytext); return SPATH; } {URI} { yylval->uri = strdup(yytext); return URI; } |