41 lines
1.2 KiB
Diff
41 lines
1.2 KiB
Diff
|
Fix OOB read on empty hostnames in evdns.
|
||
|
|
||
|
Upstream bug report:
|
||
|
|
||
|
https://github.com/libevent/libevent/issues/332
|
||
|
|
||
|
Patch copied from upstream source repository:
|
||
|
|
||
|
https://github.com/libevent/libevent/commit/ec65c42052d95d2c23d1d837136d1cf1d9ecef9e
|
||
|
|
||
|
From a0305cec166a5bc89f1eb362510cc4cd25ecc0bc Mon Sep 17 00:00:00 2001
|
||
|
From: Azat Khuzhin <a3at.mail@gmail.com>
|
||
|
Date: Fri, 25 Mar 2016 00:33:47 +0300
|
||
|
Subject: [PATCH] evdns: fix searching empty hostnames
|
||
|
|
||
|
---
|
||
|
evdns.c | 5 ++++-
|
||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/evdns.c b/evdns.c
|
||
|
index 137c24ea..6191c677 100644
|
||
|
--- a/evdns.c
|
||
|
+++ b/evdns.c
|
||
|
@@ -3122,9 +3122,12 @@ search_set_from_hostname(struct evdns_base *base) {
|
||
|
static char *
|
||
|
search_make_new(const struct search_state *const state, int n, const char *const base_name) {
|
||
|
const size_t base_len = strlen(base_name);
|
||
|
- const char need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1;
|
||
|
+ char need_to_append_dot;
|
||
|
struct search_domain *dom;
|
||
|
|
||
|
+ if (!base_len) return NULL;
|
||
|
+ need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1;
|
||
|
+
|
||
|
for (dom = state->head; dom; dom = dom->next) {
|
||
|
if (!n--) {
|
||
|
/* this is the postfix we want */
|
||
|
--
|
||
|
2.11.0
|
||
|
|