hostname out of boundary memory access
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
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"
}