Skip to content
Permalink
Browse files

curl_fnmatch: return error on illegal [] wildcard pattern

... instead of doing an infinite loop!

Added test 1162 to verify.

Reported-by: Max Dymond
Fixes #2015
  • Loading branch information...
bagder committed Oct 25, 2017
1 parent 3340b45 commit d21f82cebd8a6bf40477cd43c5618fe8b398a2e7
Showing with 58 additions and 4 deletions.
  1. +5 −3 lib/curl_fnmatch.c
  2. +1 −1 tests/data/Makefile.inc
  3. +52 −0 tests/data/test1162
@@ -240,10 +240,10 @@ static int setcharset(unsigned char **p, unsigned char *charset)
if(!ISPRINT(c))
return SETCHARSET_FAIL;
}
if(c == ']') {
else if(c == ']') {
return SETCHARSET_OK;
}
if(c == '\\') {
else if(c == '\\') {
c = *(++(*p));
if(ISPRINT(c)) {
charset[c] = 1;
@@ -253,7 +253,7 @@ static int setcharset(unsigned char **p, unsigned char *charset)
else
return SETCHARSET_FAIL;
}
if(c >= rangestart) {
else if(c >= rangestart) {
if((ISLOWER(c) && ISLOWER(rangestart)) ||
(ISDIGIT(c) && ISDIGIT(rangestart)) ||
(ISUPPER(c) && ISUPPER(rangestart))) {
@@ -267,6 +267,8 @@ static int setcharset(unsigned char **p, unsigned char *charset)
else
return SETCHARSET_FAIL;
}
else
return SETCHARSET_FAIL;
break;
case CURLFNM_SCHS_RIGHTBR:
if(c == '[') {
@@ -125,7 +125,7 @@ test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 \
\
test1160 test1161 \
test1160 test1161 test1162 \
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
@@ -0,0 +1,52 @@
<testcase>
<info>
<keywords>
FTP
RETR
LIST
wildcardmatch
ftplistparser
flaky
</keywords>
</info>

#
# Server-side
<reply>
<data>
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib576
</tool>
<name>
FTP wildcard with crazy pattern
</name>
<command>
"ftp://%HOSTIP:%FTPPORT/fully_simulated/DOS/[*\\s-'tl"
</command>
</client>
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD fully_simulated
CWD DOS
EPSV
TYPE A
LIST
QUIT
</protocol>
# 78 == CURLE_REMOTE_FILE_NOT_FOUND
<errorcode>
78
</errorcode>
</verify>
</testcase>

0 comments on commit d21f82c

Please sign in to comment.
You can’t perform that action at this time.