24 lines
757 B
Diff
24 lines
757 B
Diff
From 96f64a022014a208105ead6c8a7066018449d86d 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
|
|
+++ evdns.c
|
|
@@ -976,7 +976,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) {
|
|
@@ -997,6 +996,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;
|