FlawAtlas
Search the atlas
CVE-2016-8620 Moderate

glob parser write/read out of bounds

The curl tool's "globbing" feature allows a user to specify a numerical range through which curl iterates. It is typically specified as `[1-5]`, specifying the first and the last numbers in the range. Or with `[a-z]`, using letters. 1. The curl code for parsing the second *unsigned* number did not check for a leading minus character, which allowed a user to specify `[1--1]` with no complaints and have the latter `-1` number get turned into the largest unsigned long value the system can handle. This would ultimately cause curl to write outside the dedicated heap allocated buffer after no less than 100,000 iterations, since it would have room for 5 digits but not 6. 2. When the range is specified with letters, and the ending letter is left out `[L-]`, the code would still advance its read pointer 5 bytes even if the string was 4 bytes and end up reading outside the given buffer. This flaw exists only in the curl tool, not in the libcurl library.

Exploit probability 4.7%
Published November 2, 2016
Required by Not available
Last source change May 19, 2026

02 / AFFECTED SOFTWARE

Affected packages

Unknown Unknown

139 explicit affected versions

Unknown Unknown

24 explicit affected versions

03 / CONNECTIONS

Connected vulnerabilities

04 / EVIDENCE

Source records

Open Source Vulnerabilities CVE-2016-8620

The 'globbing' feature in curl before version 7.51.0 has a flaw that leads to integer overflow and out-of-bounds read via user controlled input.

View original source
Open Source Vulnerabilities CURL-CVE-2016-8620

The curl tool's "globbing" feature allows a user to specify a numerical range through which curl iterates. It is typically specified as `[1-5]`, specifying the first and the last numbers in the range. Or with `[a-z]`, using letters. 1. The curl code for parsing the second *unsigned* number did not check for a leading minus character, which allowed a user to specify `[1--1]` with no complaints and have the latter `-1` number get turned into the largest unsigned long value the system can handle. This would ultimately cause curl to write outside the dedicated heap allocated buffer after no less than 100,000 iterations, since it would have room for 5 digits but not 6. 2. When the range is specified with letters, and the ending letter is left out `[L-]`, the code would still advance its read pointer 5 bytes even if the string was 4 bytes and end up reading outside the given buffer. This flaw exists only in the curl tool, not in the libcurl library.

View original source

05 / REFERENCES

Further evidence