SASL password overflow via integer overflow
libcurl contains a buffer overrun in the SASL authentication code. The internal function `Curl_auth_create_plain_message` fails to correctly verify that the passed in lengths for name and password are not too long, then calculates a buffer size to allocate. On systems with a 32-bit `size_t`, the math to calculate the buffer size triggers an integer overflow when the username length exceeds 1GB and the password name length is close to 2GB in size. This integer overflow usually causes a tiny buffer to actually get allocated instead of the intended huge one, making the use of that buffer end up in a heap buffer overflow. (This bug is similar to [CVE-2018-14618](https://curl.se/docs/CVE-2018-14618.html).)
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2018-16839
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 09:39 UTC · Revision 1
Source evidence
SASL password overflow via integer overflow
core-osv · Original sourcePublished 31 Oct 2018, 08:00 UTC
libcurl contains a buffer overrun in the SASL authentication code. The internal function `Curl_auth_create_plain_message` fails to correctly verify that the passed in lengths for name and password are not too long, then calculates a buffer size to allocate. On systems with a 32-bit `size_t`, the math to calculate the buffer size triggers an integer overflow when the username length exceeds 1GB and the password name length is close to 2GB in size. This integer overflow usually causes a tiny buffer to actually get allocated instead of the intended huge one, making the use of that buffer end up in a heap buffer overflow. (This bug is similar to [CVE-2018-14618](https://curl.se/docs/CVE-2018-14618.html).)
osv:CURL-CVE-2018-16839
Complete source record
{
"id": "4da0e147a4caa989d3fa0719961d35f632ea9c5c4e9995ea7848a2ed829db78a",
"url": "https://osv.dev/vulnerability/CURL-CVE-2018-16839",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "SASL password overflow via integer overflow",
"summary": "libcurl contains a buffer overrun in the SASL authentication code. The internal function `Curl_auth_create_plain_message` fails to correctly verify that the passed in lengths for name and password are not too long, then calculates a buffer size to allocate. On systems with a 32-bit `size_t`, the math to calculate the buffer size triggers an integer overflow when the username length exceeds 1GB and the password name length is close to 2GB in size. This integer overflow usually causes a tiny buffer to actually get allocated instead of the intended huge one, making the use of that buffer end up in a heap buffer overflow. (This bug is similar to [CVE-2018-14618](https://curl.se/docs/CVE-2018-14618.html).)",
"evidence": "osv:CURL-CVE-2018-16839",
"products": [],
"severity": "low",
"structured": {
"id": "CURL-CVE-2018-16839",
"aliases": [
"CURL-CVE-2018-16839",
"CVE-2018-16839"
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "7.33.0"
},
{
"fixed": "7.62.0"
}
]
},
{
"repo": "https://github.com/curl/curl.git",
"type": "GIT",
"events": [
{
"introduced": "c56f9797e7feb7c2dc93bc389d4b85cc75220d77"
},
{
"fixed": "f3a24d7916b9173c69a3e0ee790102993833d6c5"
}
]
}
],
"versions": [
"7.61.1",
"7.61.0",
"7.60.0",
"7.59.0",
"7.58.0",
"7.57.0",
"7.56.1",
"7.56.0",
"7.55.1",
"7.55.0",
"7.54.1",
"7.54.0",
"7.53.1",
"7.53.0",
"7.52.1",
"7.52.0",
"7.51.0",
"7.50.3",
"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",
"curl-7_61_1",
"curl-7_61_0",
"curl-7_60_0",
"curl-7_59_0",
"curl-7_58_0",
"curl-7_57_0",
"curl-7_56_1",
"curl-7_56_0",
"curl-7_55_1",
"curl-7_55_0",
"curl-7_54_1",
"curl-7_54_0",
"curl-7_53_1",
"curl-7_53_0",
"curl-7_52_1",
"curl-7_52_0",
"curl-7_51_0",
"curl-7_50_3",
"curl-7_50_2",
"curl-7_50_1",
"curl-7_50_0",
"curl-7_49_1",
"curl-7_49_0",
"curl-7_48_0",
"curl-7_47_1",
"curl-7_47_0",
"curl-7_46_0",
"curl-7_45_0",
"curl-7_44_0",
"curl-7_43_0",
"curl-7_42_1",
"curl-7_42_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",
"curl-7_36_0",
"curl-7_35_0",
"curl-7_34_0",
"curl-7_33_0"
],
"database_specific": {
"source": "https://curl.se/docs/CURL-CVE-2018-16839.json",
"vanir_signatures": [
{
"id": "CURL-CVE-2018-16839-712de67c",
"digest": {
"length": 711,
"function_hash": "307941837594799485192212106034451078774"
},
"source": "https://github.com/curl/curl.git/commit/f3a24d7916b9173c69a3e0ee790102993833d6c5",
"target": {
"file": "lib/vauth/cleartext.c",
"function": "Curl_auth_create_plain_message"
},
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1"
},
{
"id": "CURL-CVE-2018-16839-c4e18881",
"digest": {
"threshold": 0.9,
"line_hashes": [
"323405508741544077634728860040609514286",
"223299084025646397460911356647096920855",
"237287603532771469400165005710548925177",
"294262302604077010113878498613345104589"
]
},
"source": "https://github.com/curl/curl.git/commit/f3a24d7916b9173c69a3e0ee790102993833d6c5",
"target": {
"file": "lib/vauth/cleartext.c"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
}
],
"vanir_signatures_modified": "2026-10-25T01:05:28Z"
}
}
],
"modified": "2026-10-25T01:05:28.979301935Z",
"provider": "osv",
"references": [],
"provider_metadata": {
"CWE": {
"id": "CWE-131",
"desc": "Incorrect Calculation of Buffer Size"
},
"URL": "https://curl.se/docs/CVE-2018-16839.json",
"www": "https://curl.se/docs/CVE-2018-16839.html",
"affects": "both",
"package": "curl",
"severity": "Low",
"last_affected": "7.61.1"
}
},
"related_cves": [
{
"value": "CVE-2018-16839",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/database_specific/severity"
},
"source_id": "core-osv",
"document_id": 444391,
"published_at": "2018-10-31T08:00:00+00:00"
}