curl supports "globbing" of URLs, in which a user can pass a numerical range to have the tool iterate over those numbers to do a sequence of transfers.
In the globbing function that parses the numerical range, there was an omission that made curl read a byte beyond the end of the URL if given a carefully crafted, or just wrongly written, URL. The URL is stored in a heap based buffer, so it could then be made to wrongly read something else instead of crashing.
An example of a URL that triggers the flaw would be
http://ur%20[0-60000000000000000000.
{
"last_affected": "7.54.1",
"www": "https://curl.se/docs/CVE-2017-1000101.html",
"severity": "Medium",
"affects": "tool",
"URL": "https://curl.se/docs/CVE-2017-1000101.json",
"package": "curl",
"CWE": {
"id": "CWE-126",
"desc": "Buffer Over-read"
}
}[
{
"signature_type": "Function",
"deprecated": false,
"source": "https://github.com/curl/curl.git/commit/453e7a7a03a2cec749abd3878a48e728c515cca7",
"digest": {
"length": 2893.0,
"function_hash": "60326349713164111015205419997284250710"
},
"id": "CURL-CVE-2017-1000101-d35fff0a",
"signature_version": "v1",
"target": {
"function": "glob_range",
"file": "src/tool_urlglob.c"
}
},
{
"signature_type": "Line",
"deprecated": false,
"source": "https://github.com/curl/curl.git/commit/453e7a7a03a2cec749abd3878a48e728c515cca7",
"digest": {
"line_hashes": [
"123150116165892801649156348291261903198",
"285900347832440945719183793124713313729",
"338786517253160465565202185010639599373",
"254954250228785359441594206624569439575"
],
"threshold": 0.9
},
"id": "CURL-CVE-2017-1000101-de4d641e",
"signature_version": "v1",
"target": {
"file": "src/tool_urlglob.c"
}
}
]