blob: db07b436d3bfc4626195a50d6c69f8315a91e3f2 [file] [log] [blame]
Brad Bishop6f8dcde2018-10-16 10:47:12 +08001From 57d299a499155d4b327e341c6024e293b0418243 Mon Sep 17 00:00:00 2001
2From: Daniel Stenberg <daniel@haxx.se>
3Date: Mon, 13 Aug 2018 10:35:52 +0200
4Subject: [PATCH] Curl_ntlm_core_mk_nt_hash: return error on too long password
5
6... since it would cause an integer overflow if longer than (max size_t
7/ 2).
8
9This is CVE-2018-14618
10
11Bug: https://curl.haxx.se/docs/CVE-2018-14618.html
12Closes #2756
13Reported-by: Zhaoyang Wu
14
15CVE: CVE-2018-14618
16Upstream-Status: Backport
17Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
18---
19 lib/curl_ntlm_core.c | 5 ++++-
20 1 file changed, 4 insertions(+), 1 deletion(-)
21
22diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
23index e27cab353c..922e85a926 100644
24--- a/lib/curl_ntlm_core.c
25+++ b/lib/curl_ntlm_core.c
26@@ -557,8 +557,11 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
27 unsigned char *ntbuffer /* 21 bytes */)
28 {
29 size_t len = strlen(password);
30- unsigned char *pw = len ? malloc(len * 2) : strdup("");
31+ unsigned char *pw;
32 CURLcode result;
33+ if(len > SIZE_T_MAX/2) /* avoid integer overflow */
34+ return CURLE_OUT_OF_MEMORY;
35+ pw = len ? malloc(len * 2) : strdup("");
36 if(!pw)
37 return CURLE_OUT_OF_MEMORY;