aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2018-05-23 23:37:00 +0200
committerChristian Grothoff <christian@grothoff.org>2018-05-23 23:37:00 +0200
commit25f35d003e2456be74bed0edf35743107c48ce32 (patch)
tree895aa34f382a6e2cb85933b69ea6252e66f401c6 /src
parent4b9c0d3a08c214719aa32d2cbd689c158634f12b (diff)
downloadgnunet-25f35d003e2456be74bed0edf35743107c48ce32.tar.gz
gnunet-25f35d003e2456be74bed0edf35743107c48ce32.zip
stop DNS lookup immediately instead of async to avoid use-after free if we get BOTH an IPv4 and IPv6 response
Diffstat (limited to 'src')
-rw-r--r--src/gns/gnunet-service-gns_resolver.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c
index d3c07e997..8b20f2ae3 100644
--- a/src/gns/gnunet-service-gns_resolver.c
+++ b/src/gns/gnunet-service-gns_resolver.c
@@ -971,6 +971,8 @@ dns_result_parser (void *cls,
971 &handle_dns_result, 971 &handle_dns_result,
972 rh); 972 rh);
973 GNUNET_DNSPARSER_free_packet (p); 973 GNUNET_DNSPARSER_free_packet (p);
974 GNUNET_DNSSTUB_resolve_cancel (rh->dns_request);
975 rh->dns_request = NULL;
974 return; 976 return;
975 } 977 }
976 978
@@ -1110,6 +1112,8 @@ dns_result_parser (void *cls,
1110 rh->proc (rh->proc_cls, 1112 rh->proc (rh->proc_cls,
1111 rd_count - skip, 1113 rd_count - skip,
1112 rd); 1114 rd);
1115 GNUNET_DNSSTUB_resolve_cancel (rh->dns_request);
1116 rh->dns_request = NULL;
1113 } 1117 }
1114 GNUNET_DNSPARSER_free_packet (p); 1118 GNUNET_DNSPARSER_free_packet (p);
1115 if (NULL != rh->task_id) 1119 if (NULL != rh->task_id)