mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-31 19:17:12 +00:00
33 lines
1012 B
Diff
33 lines
1012 B
Diff
|
From 57d299a499155d4b327e341c6024e293b0418243 Mon Sep 17 00:00:00 2001
|
||
|
From: Daniel Stenberg <daniel@haxx.se>
|
||
|
Date: Mon, 13 Aug 2018 10:35:52 +0200
|
||
|
Subject: [PATCH] Curl_ntlm_core_mk_nt_hash: return error on too long password
|
||
|
|
||
|
... since it would cause an integer overflow if longer than (max size_t
|
||
|
/ 2).
|
||
|
|
||
|
This is CVE-2018-14618
|
||
|
|
||
|
Bug: https://curl.haxx.se/docs/CVE-2018-14618.html
|
||
|
Closes #2756
|
||
|
Reported-by: Zhaoyang Wu
|
||
|
---
|
||
|
lib/curl_ntlm_core.c | 5 ++++-
|
||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/lib/curl_ntlm_core.c
|
||
|
+++ b/lib/curl_ntlm_core.c
|
||
|
@@ -557,8 +557,11 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struc
|
||
|
unsigned char *ntbuffer /* 21 bytes */)
|
||
|
{
|
||
|
size_t len = strlen(password);
|
||
|
- unsigned char *pw = len ? malloc(len * 2) : strdup("");
|
||
|
+ unsigned char *pw;
|
||
|
CURLcode result;
|
||
|
+ if(len > SIZE_T_MAX/2) /* avoid integer overflow */
|
||
|
+ return CURLE_OUT_OF_MEMORY;
|
||
|
+ pw = len ? malloc(len * 2) : strdup("");
|
||
|
if(!pw)
|
||
|
return CURLE_OUT_OF_MEMORY;
|
||
|
|