diff options
author | Daniel Stenberg <daniel@haxx.se> | 2013-08-15 13:05:25 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2013-08-16 11:52:08 +0200 |
commit | 5ca96cb84410270e233c92bf1b2583cba40c3fad (patch) | |
tree | e577dbc96ddf320574a030213f4880815558ea84 /tests/data/test1234 | |
parent | 10afe7cf105d03b94b34f937d53e9b352b87817c (diff) |
urlglob: better detect unclosed braces, empty lists and overflows
A rather big overhaul and cleanup.
1 - curl wouldn't properly detect and reject globbing that ended with an
open brace if there were brackets or braces before it. Like "{}{" or
"[0-1]{"
2 - curl wouldn't properly reject empty lists so that "{}{}" would
result in curl getting (nil) strings in the output.
3 - By using strtoul() instead of sscanf() the code will now detected
over and underflows. It now also better parses the step argument to only
accept positive numbers and only step counters that is smaller than the
delta between the maximum and minimum numbers.
4 - By switching to unsigned longs instead of signed ints for the
counters, the max values for []-ranges are now very large (on 64bit
machines).
5 - Bumped the maximum number of globs in a single URL to 100 (from 10)
6 - Simplified the code somewhat and now it stores fixed strings as
single- entry lists. That's also one of the reasons why I did (5) as now
all strings between "globs" will take a slot in the array.
Added test 1234 and 1235 to verify. Updated test 87.
This commit fixes three separate bug reports.
Bug: http://curl.haxx.se/bug/view.cgi?id=1264
Bug: http://curl.haxx.se/bug/view.cgi?id=1265
Bug: http://curl.haxx.se/bug/view.cgi?id=1266
Reported-by: Will Dietz
Diffstat (limited to 'tests/data/test1234')
-rw-r--r-- | tests/data/test1234 | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/data/test1234 b/tests/data/test1234 new file mode 100644 index 000000000..9d7a79fc4 --- /dev/null +++ b/tests/data/test1234 @@ -0,0 +1,32 @@ +<testcase> +<info> +<keywords> +{} list +FAILURE +</keywords> +</info> +# Server-side +<reply> +</reply> + +# Client-side +<client> +<server> +none +</server> + <name> +abusing {}-globbing + </name> + <command> +"%HOSTIP:%HTTPPORT/1234[0-1]{" "%HOSTIP:%HTTPPORT/{}{}{}{" +</command> +</client> + +# Verify data after the test has been "shot" +<verify> +# 3 == CURLE_URL_MALFORMAT +<errorcode> +3 +</errorcode> +</verify> +</testcase> |