From 9a1a436d0afdb2b6e4812c0417272fc1ef9f0cec Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 4 Jan 2012 12:36:43 +0000 Subject: [PATCH] -bugfixes --- src/dns/Makefile.am | 11 +++++++++++ src/dns/dnsparser.c | 6 +++--- src/dns/gnunet-service-dns_new.c | 9 +++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/dns/Makefile.am b/src/dns/Makefile.am index 674f4bf57..6322f2ca6 100644 --- a/src/dns/Makefile.am +++ b/src/dns/Makefile.am @@ -34,6 +34,9 @@ lib_LTLIBRARIES = \ bin_PROGRAMS = \ gnunet-service-dns gnunet-service-dns-new $(HIJACKBIN) +noinst_PROGRAMS = \ + gnunet-dns-monitor + plugin_LTLIBRARIES = \ libgnunet_plugin_block_dns.la @@ -55,6 +58,14 @@ gnunet_service_dns_LDADD = \ $(top_builddir)/src/dns/libgnunetdnsparser.la \ $(GN_LIBINTL) +gnunet_dns_monitor_SOURCES = \ + gnunet-dns-monitor.c +gnunet_dns_monitor_LDADD = \ + $(top_builddir)/src/dns/libgnunetdnsparser.la \ + $(top_builddir)/src/dns/libgnunetdnsnew.la \ + $(top_builddir)/src/util/libgnunetutil.la \ + $(GN_LIBINTL) + gnunet_service_dns_new_SOURCES = \ gnunet-service-dns_new.c gnunet_service_dns_new_LDADD = \ diff --git a/src/dns/dnsparser.c b/src/dns/dnsparser.c index 2cd728f37..2a3fd55c0 100644 --- a/src/dns/dnsparser.c +++ b/src/dns/dnsparser.c @@ -82,7 +82,7 @@ parse_name (const char *udp_payload, ret = GNUNET_strdup (""); while (1) { - if (*off == udp_payload_length) + if (*off >= udp_payload_length) goto error; len = input[*off]; if (0 == len) @@ -98,7 +98,7 @@ parse_name (const char *udp_payload, &udp_payload[*off + 1]); GNUNET_free (ret); ret = tmp; - off += 1 + len; + *off += 1 + len; } else if ((64 | 128) == (len & (64 | 128)) ) { @@ -116,7 +116,7 @@ parse_name (const char *udp_payload, GNUNET_free (ret); GNUNET_free (xstr); ret = tmp; - off += 2; + *off += 2; /* pointers always terminate names */ break; } diff --git a/src/dns/gnunet-service-dns_new.c b/src/dns/gnunet-service-dns_new.c index 8918039d1..bf2368faa 100644 --- a/src/dns/gnunet-service-dns_new.c +++ b/src/dns/gnunet-service-dns_new.c @@ -1049,10 +1049,11 @@ handle_client_response (void *cls GNUNET_UNUSED, rr->client_wait_list_length, 0); } - next_phase (rr); - GNUNET_SERVER_receive_done (client, GNUNET_OK); - return; - } + break; + } + next_phase (rr); + GNUNET_SERVER_receive_done (client, GNUNET_OK); + return; } /* odd, client was not on our list for the request, that ought to be an error */ -- 2.25.1