From 4135f633ac60cd49ae58a440eee309bc6c978ac6 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 9 Jul 2015 15:40:00 +0200 Subject: [PATCH] Fix invalid memory reads --- src/context.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/context.c b/src/context.c index 491ff515..f62ed266 100644 --- a/src/context.c +++ b/src/context.c @@ -1274,7 +1274,8 @@ set_ub_dns_transport(struct getdns_context* context) { switch (context->dns_transports[0]) { case GETDNS_TRANSPORT_UDP: set_ub_string_opt(context, "do-udp:", "yes"); - if (context->dns_transports[1] == GETDNS_TRANSPORT_TCP) + if (context->dns_transport_count > 1 + && context->dns_transports[1] == GETDNS_TRANSPORT_TCP) set_ub_string_opt(context, "do-tcp:", "yes"); else set_ub_string_opt(context, "do-tcp:", "no"); @@ -1333,6 +1334,7 @@ getdns_context_set_dns_transport(struct getdns_context *context, value == GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN || value == GETDNS_TRANSPORT_TLS_ONLY_KEEP_CONNECTIONS_OPEN) count = 1; + context->dns_transport_count = count; context->dns_transports = GETDNS_XMALLOC(context->my_mf, getdns_transport_list_t, count);