aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuillaume Maudoux <layus.on@gmail.com>2016-06-24 15:30:19 +0200
committerGuillaume Maudoux <layus.on@gmail.com>2016-11-27 17:48:46 +0100
commite4b82af38711126bb2a531451a28b062937a5a81 (patch)
tree2ca61eab017ccfb8d3dc18d75568931b71b63553 /src
parent7ee43df8622cc0589d54248fb44cebe1c1d991d2 (diff)
Improve error message on trailing path slashes
Diffstat (limited to 'src')
-rw-r--r--src/libexpr/lexer.l16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l
index 3ac7ce723..56d8456c0 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; }