Skip to content
Heist/ feed
Back to feed
Medium

curl escape and unescape integer overflows

Type: advisorySources: OSV

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 -1) would end up causing an allocation of zero bytes of heap memory that curl would attempt to write gigabytes of data into. The use of 'int' for this input type in the API is of course unwise but has remained so in order to maintain the API over the years.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2016-7167
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 09:35 UTC · Revision 1

Source evidence

curl escape and unescape integer overflows

core-osv · Original source

Published 14 Sept 2016, 08:00 UTC

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 -1) would end up causing an allocation of zero bytes of heap memory that curl would attempt to write gigabytes of data into. The use of 'int' for this input type in the API is of course unwise but has remained so in order to maintain the API over the years.

osv:CURL-CVE-2016-7167
Complete source record
{
  "id": "d975365df5a42e2fed330e2d7c812c09cff47c7cf5574936870eb63a39a6a7bf",
  "url": "https://osv.dev/vulnerability/CURL-CVE-2016-7167",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "curl escape and unescape integer overflows",
    "summary": "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 -1) would end up causing an allocation of zero bytes of heap memory that curl would attempt to write gigabytes of data into. The use of 'int' for this input type in the API is of course unwise but has remained so in order to maintain the API over the years.",
    "evidence": "osv:CURL-CVE-2016-7167",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CURL-CVE-2016-7167",
      "aliases": [
        "CURL-CVE-2016-7167",
        "CVE-2016-7167"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "7.11.1"
                },
                {
                  "fixed": "7.50.3"
                }
              ]
            }
          ],
          "versions": [
            "7.50.2",
            "7.50.1",
            "7.50.0",
            "7.49.1",
            "7.49.0",
            "7.48.0",
            "7.47.1",
            "7.47.0",
            "7.46.0",
            "7.45.0",
            "7.44.0",
            "7.43.0",
            "7.42.1",
            "7.42.0",
            "7.41.0",
            "7.40.0",
            "7.39.0",
            "7.38.0",
            "7.37.1",
            "7.37.0",
            "7.36.0",
            "7.35.0",
            "7.34.0",
            "7.33.0",
            "7.32.0",
            "7.31.0",
            "7.30.0",
            "7.29.0",
            "7.28.1",
            "7.28.0",
            "7.27.0",
            "7.26.0",
            "7.25.0",
            "7.24.0",
            "7.23.1",
            "7.23.0",
            "7.22.0",
            "7.21.7",
            "7.21.6",
            "7.21.5",
            "7.21.4",
            "7.21.3",
            "7.21.2",
            "7.21.1",
            "7.21.0",
            "7.20.1",
            "7.20.0",
            "7.19.7",
            "7.19.6",
            "7.19.5",
            "7.19.4",
            "7.19.3",
            "7.19.2",
            "7.19.1",
            "7.19.0",
            "7.18.2",
            "7.18.1",
            "7.18.0",
            "7.17.1",
            "7.17.0",
            "7.16.4",
            "7.16.3",
            "7.16.2",
            "7.16.1",
            "7.16.0",
            "7.15.5",
            "7.15.4",
            "7.15.3",
            "7.15.2",
            "7.15.1",
            "7.15.0",
            "7.14.1",
            "7.14.0",
            "7.13.2",
            "7.13.1",
            "7.13.0",
            "7.12.3",
            "7.12.2",
            "7.12.1",
            "7.12.0",
            "7.11.2",
            "7.11.1"
          ],
          "database_specific": {
            "source": "https://curl.se/docs/CURL-CVE-2016-7167.json"
          }
        }
      ],
      "modified": "2026-10-24T23:17:46Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "CWE": {
          "id": "CWE-131",
          "desc": "Incorrect Calculation of Buffer Size"
        },
        "URL": "https://curl.se/docs/CVE-2016-7167.json",
        "www": "https://curl.se/docs/CVE-2016-7167.html",
        "affects": "lib",
        "package": "curl",
        "severity": "Medium",
        "last_affected": "7.50.2"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2016-7167",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 444202,
  "published_at": "2016-09-14T08:00:00+00:00"
}