mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
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 Closes #2017
This commit is contained in:
parent
7b11c5dbe6
commit
f0364f7e31
@ -240,10 +240,10 @@ static int setcharset(unsigned char **p, unsigned char *charset)
|
|||||||
if(!ISPRINT(c))
|
if(!ISPRINT(c))
|
||||||
return SETCHARSET_FAIL;
|
return SETCHARSET_FAIL;
|
||||||
}
|
}
|
||||||
if(c == ']') {
|
else if(c == ']') {
|
||||||
return SETCHARSET_OK;
|
return SETCHARSET_OK;
|
||||||
}
|
}
|
||||||
if(c == '\\') {
|
else if(c == '\\') {
|
||||||
c = *(++(*p));
|
c = *(++(*p));
|
||||||
if(ISPRINT(c)) {
|
if(ISPRINT(c)) {
|
||||||
charset[c] = 1;
|
charset[c] = 1;
|
||||||
@ -253,7 +253,7 @@ static int setcharset(unsigned char **p, unsigned char *charset)
|
|||||||
else
|
else
|
||||||
return SETCHARSET_FAIL;
|
return SETCHARSET_FAIL;
|
||||||
}
|
}
|
||||||
if(c >= rangestart) {
|
else if(c >= rangestart) {
|
||||||
if((ISLOWER(c) && ISLOWER(rangestart)) ||
|
if((ISLOWER(c) && ISLOWER(rangestart)) ||
|
||||||
(ISDIGIT(c) && ISDIGIT(rangestart)) ||
|
(ISDIGIT(c) && ISDIGIT(rangestart)) ||
|
||||||
(ISUPPER(c) && ISUPPER(rangestart))) {
|
(ISUPPER(c) && ISUPPER(rangestart))) {
|
||||||
@ -267,6 +267,8 @@ static int setcharset(unsigned char **p, unsigned char *charset)
|
|||||||
else
|
else
|
||||||
return SETCHARSET_FAIL;
|
return SETCHARSET_FAIL;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return SETCHARSET_FAIL;
|
||||||
break;
|
break;
|
||||||
case CURLFNM_SCHS_RIGHTBR:
|
case CURLFNM_SCHS_RIGHTBR:
|
||||||
if(c == '[') {
|
if(c == '[') {
|
||||||
|
@ -125,7 +125,7 @@ test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
|
|||||||
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
|
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
|
||||||
test1152 test1153 \
|
test1152 test1153 \
|
||||||
\
|
\
|
||||||
test1160 test1161 \
|
test1160 test1161 test1162 \
|
||||||
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
|
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
|
||||||
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
|
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
|
||||||
test1216 test1217 test1218 test1219 \
|
test1216 test1217 test1218 test1219 \
|
||||||
|
52
tests/data/test1162
Normal file
52
tests/data/test1162
Normal file
@ -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>
|
Loading…
Reference in New Issue
Block a user