diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-05-23 23:37:00 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-05-23 23:37:00 +0200 |
commit | 25f35d003e2456be74bed0edf35743107c48ce32 (patch) | |
tree | 895aa34f382a6e2cb85933b69ea6252e66f401c6 /src | |
parent | 4b9c0d3a08c214719aa32d2cbd689c158634f12b (diff) | |
download | gnunet-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.c | 4 |
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) |