Description
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 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 (CVE-2016-7167).