curl: escape and unescape integer overflows (CVE-2016-7167)
The four libcurl functions curl_escape(), curl_easy_escape(),
curl_unescape and curl_easy_unescape perform string URL percent
escaping and unescaping.
They accept custom string length inputs in signed integer arguments.
(The functions having names without “easy” being the deprecated versions
of the others.)
The provided string length arguments were not properly checked and due to arithmetic in the functions, passing in the length 0xffffffff (2^32-1 or UINT_MAX or even just –1) would end up causing an allocation of zero bytes of heap memory that curl would attempt to write gigabytes of data into.
Affected versions:
libcurl 7.11.1 to and including 7.50.2
Not affected versions:
libcurl < 7.11.1 and libcurl >= 7.50.3
Reference:
https://curl.haxx.se/docs/adv\_20160914.html
Patch:
https://curl.haxx.se/CVE-2016-7167.patch
(from redmine: issue id 6181, created on 2016-09-19, closed on 2016-10-18)
- Relations:
- child #6182 (closed)
- child #6183 (closed)
- child #6184 (closed)
- child #6185 (closed)
- child #6186 (closed)