1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
Fix CVE-2016-10195 (buffer overread in libevent's DNS code):
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10195
https://github.com/libevent/libevent/issues/317
Patch copied from upstream source repository:
https://github.com/libevent/libevent/commit/96f64a022014a208105ead6c8a7066018449d86d
From 3c570970516f48da35f42fef98276531fcc0abaa Mon Sep 17 00:00:00 2001
From: Azat Khuzhin <a3at.mail@gmail.com>
Date: Mon, 1 Feb 2016 17:32:09 +0300
Subject: [PATCH] evdns: name_parse(): fix remote stack overread
---
evdns.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/evdns.c b/evdns.c
index 60b10485..137c24ea 100644
--- a/evdns.c
+++ b/evdns.c
@@ -960,7 +960,6 @@ name_parse(u8 *packet, int length, int *idx, char *name_out, int name_out_len) {
for (;;) {
u8 label_len;
- if (j >= length) return -1;
GET8(label_len);
if (!label_len) break;
if (label_len & 0xc0) {
@@ -981,6 +980,7 @@ name_parse(u8 *packet, int length, int *idx, char *name_out, int name_out_len) {
*cp++ = '.';
}
if (cp + label_len >= end) return -1;
+ if (j + label_len > length) return -1;
memcpy(cp, packet + j, label_len);
cp += label_len;
j += label_len;
--
2.11.0
|