Skip to content
Heist/ feed
Back to feed
Medium

hostname out of boundary memory access

Type: advisorySources: OSV

There is a private function in libcurl called `fix_hostname()` that removes a trailing dot from the hostname if there is one. The function is called after the hostname has been extracted from the URL libcurl has been told to act on. If a URL is given with a zero-length hostname, like in "http://:80" or ":80", `fix_hostname()` indexes the hostname pointer with a -1 offset (as it blindly assumes a non-zero length) and both read and assign that address. At best, this gets unnoticed but can also lead to a crash or worse. We have not researched further what kind of malicious actions that potentially this could be used for.

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

Source evidence

hostname out of boundary memory access

core-osv · Original source

Published 22 Apr 2015, 08:00 UTC

There is a private function in libcurl called `fix_hostname()` that removes a trailing dot from the hostname if there is one. The function is called after the hostname has been extracted from the URL libcurl has been told to act on. If a URL is given with a zero-length hostname, like in "http://:80" or ":80", `fix_hostname()` indexes the hostname pointer with a -1 offset (as it blindly assumes a non-zero length) and both read and assign that address. At best, this gets unnoticed but can also lead to a crash or worse. We have not researched further what kind of malicious actions that potentially this could be used for.

osv:CURL-CVE-2015-3144
Complete source record
{
  "id": "bd858dfcb9c006647d1c25d7c2deadf3a23c03daea6deee206d97a0cf1eb0706",
  "url": "https://osv.dev/vulnerability/CURL-CVE-2015-3144",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "hostname out of boundary memory access",
    "summary": "There is a private function in libcurl called `fix_hostname()` that removes a trailing dot from the hostname if there is one. The function is called after the hostname has been extracted from the URL libcurl has been told to act on. If a URL is given with a zero-length hostname, like in \"http://:80\" or \":80\", `fix_hostname()` indexes the hostname pointer with a -1 offset (as it blindly assumes a non-zero length) and both read and assign that address. At best, this gets unnoticed but can also lead to a crash or worse. We have not researched further what kind of malicious actions that potentially this could be used for.",
    "evidence": "osv:CURL-CVE-2015-3144",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CURL-CVE-2015-3144",
      "aliases": [
        "CURL-CVE-2015-3144",
        "CVE-2015-3144"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "7.37.0"
                },
                {
                  "fixed": "7.42.0"
                }
              ]
            },
            {
              "repo": "https://github.com/curl/curl.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "5de8d84098db1bd24e7fffefbe14e81f2a05995a"
                },
                {
                  "fixed": "0583e87ada7a3cfb10904ae4ab61b339582c5bd3"
                }
              ]
            }
          ],
          "versions": [
            "7.41.0",
            "7.40.0",
            "7.39.0",
            "7.38.0",
            "7.37.1",
            "7.37.0",
            "curl-7_41_0",
            "curl-7_40_0",
            "curl-7_39_0",
            "curl-7_38_0",
            "curl-7_37_1",
            "curl-7_37_0"
          ],
          "database_specific": {
            "source": "https://curl.se/docs/CURL-CVE-2015-3144.json",
            "vanir_signatures": [
              {
                "id": "CURL-CVE-2015-3144-285a442b",
                "digest": {
                  "length": 1215,
                  "function_hash": "302857014196003819835645927753951719924"
                },
                "source": "https://github.com/curl/curl.git/commit/0583e87ada7a3cfb10904ae4ab61b339582c5bd3",
                "target": {
                  "file": "lib/url.c",
                  "function": "fix_hostname"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2015-3144-dd778062",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "270878377318186174494843635834225150969",
                    "46407169664050383391727544247789172485",
                    "51621819899399844632954616211039468642",
                    "118193069924792380754011537934000253690"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/0583e87ada7a3cfb10904ae4ab61b339582c5bd3",
                "target": {
                  "file": "lib/url.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              }
            ],
            "vanir_signatures_modified": "2026-10-25T01:04:57Z"
          }
        }
      ],
      "modified": "2026-10-25T01:04:57.975963216Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "CWE": {
          "id": "CWE-124",
          "desc": "Buffer Underwrite ('Buffer Underflow')"
        },
        "URL": "https://curl.se/docs/CVE-2015-3144.json",
        "www": "https://curl.se/docs/CVE-2015-3144.html",
        "affects": "both",
        "package": "curl",
        "severity": "Medium",
        "last_affected": "7.41.0"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2015-3144",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 444315,
  "published_at": "2015-04-22T08:00:00+00:00"
}