From 6ec0f2e021718de8f0ee2745bfd882e353dfa40e Mon Sep 17 00:00:00 2001 From: Hoda Rohani Date: Mon, 8 May 2017 12:49:59 +0200 Subject: [PATCH 01/35] add get functions to check the values --- ...tdns_context_set_context_update_callback.h | 30 +- .../check_getdns_context_set_dns_transport.h | 33 +- src/test/check_getdns_context_set_timeout.c | 5 + src/test/check_getdns_pretty_print_dict.h | 67 + .../260-conversion-functions.c | 9 + .../260-conversion-functions.good | 1531 +++++++++++++++++ .../265-supported-rrs.good | 25 +- .../265-supported-rrs.net-dns.org | 3 +- .../330-event-loops-unit-tests.test | 8 +- 9 files changed, 1692 insertions(+), 19 deletions(-) diff --git a/src/test/check_getdns_context_set_context_update_callback.h b/src/test/check_getdns_context_set_context_update_callback.h index 214893a2..77926664 100644 --- a/src/test/check_getdns_context_set_context_update_callback.h +++ b/src/test/check_getdns_context_set_context_update_callback.h @@ -301,6 +301,8 @@ * expect: GETDNS_CONTEXT_CODE_EDNS_EXTENDED_RCODE */ struct getdns_context *context = NULL; + uint8_t extended_rcode; + CONTEXT_CREATE(TRUE); ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn), @@ -310,6 +312,9 @@ ASSERT_RC(getdns_context_set_edns_extended_rcode(context, 1), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_extended_rcode()"); + ASSERT_RC(getdns_context_get_edns_extended_rcode(context, &extended_rcode), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_extended_rcode()"); + ck_assert_msg(extended_rcode == 1, "extended_rcode should be 1, got %d", (int)extended_rcode); CONTEXT_DESTROY; @@ -325,6 +330,8 @@ * expect: GETDNS_CONTEXT_CODE_EDNS_VERSION */ struct getdns_context *context = NULL; + uint8_t version; + CONTEXT_CREATE(TRUE); ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn), @@ -334,6 +341,9 @@ ASSERT_RC(getdns_context_set_edns_version(context, 1), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_version()"); + ASSERT_RC(getdns_context_get_edns_version(context, &version), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_version()"); + ck_assert_msg(version == 1, "version should be 1, got %d", (int)version); CONTEXT_DESTROY; @@ -373,6 +383,8 @@ * expect: GETDNS_CONTEXT_CODE_EDNS_CLIENT_SUBNET_PRIVATE */ struct getdns_context *context = NULL; + uint8_t client_subnet_private; + CONTEXT_CREATE(TRUE); ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn), @@ -382,6 +394,9 @@ ASSERT_RC(getdns_context_set_edns_client_subnet_private(context, 1), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_client_subnet_private()"); + ASSERT_RC(getdns_context_get_edns_client_subnet_private(context, &client_subnet_private), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_client_subnet_private()"); + ck_assert_msg(client_subnet_private == 1, "client_subnet_private should be 1, got %d", (int)client_subnet_private); CONTEXT_DESTROY; @@ -397,6 +412,8 @@ * expect: GETDNS_CONTEXT_CODE_TLS_QUERY_PADDING_BLOCKSIZE */ struct getdns_context *context = NULL; + uint16_t pad; + CONTEXT_CREATE(TRUE); ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn), @@ -406,6 +423,9 @@ ASSERT_RC(getdns_context_set_tls_query_padding_blocksize(context, 1400), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_tls_query_padding_blocksize()"); + ASSERT_RC(getdns_context_get_tls_query_padding_blocksize(context, &pad), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_tls_query_padding_blocksize()"); + ck_assert_msg(pad == 1400, "padding_blocksize should be 1400 but got %d", (int) pad); CONTEXT_DESTROY; @@ -438,11 +458,12 @@ START_TEST (getdns_context_set_context_update_callback_23) { /* - * value is NULL - * expect: GETDNS_RETURN_INVALID_PARAMETER + * expect: GETDNS_RETURN_GOOD */ struct getdns_context *context = NULL; + uint8_t round_robin; + CONTEXT_CREATE(TRUE); ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn), @@ -451,7 +472,10 @@ expected_changed_item = GETDNS_CONTEXT_CODE_ROUND_ROBIN_UPSTREAMS; ASSERT_RC(getdns_context_set_round_robin_upstreams(context, 1), - GETDNS_RETURN_GOOD, "Return code from getdns_context_set_timeout()"); + GETDNS_RETURN_GOOD, "Return code from getdns_context_set_round_robin_upstream()"); + ASSERT_RC(getdns_context_get_round_robin_upstreams(context, &round_robin), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_round_robin_upstream()"); + ck_assert_msg( round_robin == 1, "round_robin should be 1, got %d", (int)round_robin); CONTEXT_DESTROY; diff --git a/src/test/check_getdns_context_set_dns_transport.h b/src/test/check_getdns_context_set_dns_transport.h index fba6c195..93362071 100644 --- a/src/test/check_getdns_context_set_dns_transport.h +++ b/src/test/check_getdns_context_set_dns_transport.h @@ -39,7 +39,7 @@ { /* * context is NULL - * expect: GETDNS_RETURN_BAD_CONTEXT + * expect: GETDNS_RETURN_INVALID_PARAMETER */ struct getdns_context *context = NULL; @@ -47,7 +47,12 @@ ASSERT_RC(getdns_context_set_dns_transport(context, value), GETDNS_RETURN_INVALID_PARAMETER, "Return code from getdns_context_set_dns_transport()"); - + + ASSERT_RC(getdns_context_set_edns_maximum_udp_payload_size(context, 512), + GETDNS_RETURN_INVALID_PARAMETER, "Return code from getdns_context_set_edns_maximum_udp_payload_size()"); + + ASSERT_RC(getdns_context_unset_edns_maximum_udp_payload_size(context), + GETDNS_RETURN_INVALID_PARAMETER, "Return code from getdns_context_unset_edns_maximum_udp_payload_size()"); } END_TEST @@ -55,6 +60,7 @@ { /* * value is an undefined transport value + * do_bit is not correct * expect: GETDNS_RETURN_CONTEXT_UPDATE_FAIL */ @@ -66,6 +72,9 @@ ASSERT_RC(getdns_context_set_dns_transport(context, 233), GETDNS_RETURN_CONTEXT_UPDATE_FAIL, "Return code from getdns_context_set_dns_transport()"); + ASSERT_RC(getdns_context_set_edns_do_bit(context, 5), + GETDNS_RETURN_CONTEXT_UPDATE_FAIL, "Return code from getdns_context_set_edns_do_bit()"); + CONTEXT_DESTROY; } @@ -132,6 +141,9 @@ uint32_t tc; uint32_t transport; uint32_t type; + uint16_t payload_size; + uint8_t do_bit; + getdns_transport_t trans; /* Note that stricly this test just establishes that the requested transport and the reported transport are consistent, it does not guarentee which @@ -147,10 +159,22 @@ /* Request a response that should be truncated over UDP */ ASSERT_RC(getdns_context_set_dns_transport(context, GETDNS_TRANSPORT_UDP_ONLY), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_transport()"); + ASSERT_RC(getdns_context_get_dns_transport(context, &trans), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_dns_transport()"); + ck_assert_msg(trans == 541, "dns_transport should be 541(GETDNS_TRANSPORT_UDP_ONLY) but got %d", (int)trans); + + ASSERT_RC(getdns_context_set_edns_maximum_udp_payload_size(context, 512), - GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_maximum_udp_payload_size()"); + GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_maximum_udp_payload_size()"); + ASSERT_RC(getdns_context_get_edns_maximum_udp_payload_size(context, &payload_size), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_maximum_udp_payload_size()"); + ck_assert_msg(payload_size == 512, "payload_size should be 512, got %d", (int)payload_size); + ASSERT_RC(getdns_context_set_edns_do_bit(context, 1), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_edns_do_bit()"); + ASSERT_RC(getdns_context_get_edns_do_bit(context, &do_bit), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_edns_do_bit()"); + ck_assert_msg(do_bit == 1, "do_bit should be 1, got %d", (int)do_bit); ASSERT_RC(getdns_general_sync(context, "large.getdnsapi.net", GETDNS_RRTYPE_TXT, extensions, &response), GETDNS_RETURN_GOOD, "Return code from getdns_general_sync()"); @@ -192,6 +216,9 @@ GETDNS_RETURN_GOOD, "Failed to extract \"tc\""); ASSERT_RC(tc, 0, "Packet trucated - not as expected"); + ASSERT_RC(getdns_context_unset_edns_maximum_udp_payload_size(context), + GETDNS_RETURN_GOOD, "Return code from getdns_context_unset_edns_maximum_udp_payload_size()"); + CONTEXT_DESTROY; } diff --git a/src/test/check_getdns_context_set_timeout.c b/src/test/check_getdns_context_set_timeout.c index 26d25aa5..893608cb 100644 --- a/src/test/check_getdns_context_set_timeout.c +++ b/src/test/check_getdns_context_set_timeout.c @@ -282,6 +282,7 @@ START_TEST (getdns_context_set_timeout_3) t_data.num_callbacks = 0; t_data.num_timeouts = 0; t_data.port = 43210; + uint64_t timeout; pthread_create(&thread, NULL, run_server, (void *)&t_data); @@ -324,6 +325,10 @@ START_TEST (getdns_context_set_timeout_3) RUN_EVENT_LOOP; + ASSERT_RC(getdns_context_get_timeout(context, &timeout), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_timeout()"); + ck_assert_msg(timeout == 500, "timeout should be 500, got %d", (int)timeout); + CONTEXT_DESTROY; t_data.running = 0; diff --git a/src/test/check_getdns_pretty_print_dict.h b/src/test/check_getdns_pretty_print_dict.h index 08aec6c1..6dc6d189 100644 --- a/src/test/check_getdns_pretty_print_dict.h +++ b/src/test/check_getdns_pretty_print_dict.h @@ -88,6 +88,68 @@ static const char pretty_expected[] = "{\n" " ]\n" "}"; +static const char pretty_expected2[] = "{\n" +" \"bindata\":\"bindata\",\n" +" \"dict\":\n" +" {\n" +" \"bindata\":\"bindata\",\n" +" \"dict\":\n" +" {\n" +" \"bindata\":\"bindata\",\n" +" \"dict\":\n" +" {\n" +" \"int\": 4\n" +" },\n" +" \"int\": 3,\n" +" \"list\":\n" +" [\n" +" 5\n" +" ]\n" +" },\n" +" \"int\": 2,\n" +" \"list\":\n" +" [\n" +" 6,\n" +" \"bindata\",\n" +" {\n" +" \"bindata\":\"bindata\"\n" +" },\n" +" [\n" +" \"bindata\"\n" +" ]\n" +" ]\n" +" },\n" +" \"int\": 1,\n" +" \"list\":\n" +" [\n" +" 7,\n" +" \"bindata\",\n" +" {\n" +" \"bindata\":\"bindata\",\n" +" \"dict\":\n" +" {\n" +" \"int\": 9\n" +" },\n" +" \"int\": 8,\n" +" \"list\":\n" +" [\n" +" 10\n" +" ]\n" +" },\n" +" [\n" +" 11,\n" +" \"bindata\",\n" +" {\n" +" \"bindata\":\"bindata\"\n" +" },\n" +" [\n" +" \"bindata\"\n" +" ]\n" +" ]\n" +" ]\n" +"}"; + + /* ************************************************************************** * * @@ -267,6 +329,11 @@ static const char pretty_expected[] = "{\n" ck_assert_msg(strcmp(pretty_expected, pretty) == 0, "Expected:\n%s\ngot:\n%s\n", pretty_expected, pretty); + pretty = getdns_print_json_dict(dict1, 1); + ck_assert_msg(pretty != NULL, "NULL returned by getdns_print_json_dict()"); + ck_assert_msg(strcmp(pretty_expected2, pretty) == 0, + "Expected:\n%s\ngot:\n%s\n", pretty_expected2, pretty); + /* * Destroy all of the sub-dicts and sub-lists */ diff --git a/src/test/tpkg/260-conversion-functions.tpkg/260-conversion-functions.c b/src/test/tpkg/260-conversion-functions.tpkg/260-conversion-functions.c index 0e69eb4c..a8d16c6a 100644 --- a/src/test/tpkg/260-conversion-functions.tpkg/260-conversion-functions.c +++ b/src/test/tpkg/260-conversion-functions.tpkg/260-conversion-functions.c @@ -27,6 +27,14 @@ void print_list(getdns_list *rr_list) free(str); } +void print_json_list(getdns_list *rr_list, int pretty) +{ + char *str = getdns_print_json_list(rr_list, pretty); + printf("%s\n", str); + free(str); +} + + void print_wire(uint8_t *wire, size_t wire_len) { size_t pos, i; @@ -254,6 +262,7 @@ int main(int argc, char const * const argv[]) fclose(in); print_list(rr_list); + print_json_list(rr_list, 1); /* Fill the wire_buf with wireformat RR's in rr_list diff --git a/src/test/tpkg/260-conversion-functions.tpkg/260-conversion-functions.good b/src/test/tpkg/260-conversion-functions.tpkg/260-conversion-functions.good index 9079ef9a..b1acbd46 100644 --- a/src/test/tpkg/260-conversion-functions.tpkg/260-conversion-functions.good +++ b/src/test/tpkg/260-conversion-functions.tpkg/260-conversion-functions.good @@ -1631,6 +1631,1537 @@ apl.net-dns.org. 3600 IN APL 1:192.168.42.0/26 1:192.168.42.64/26 !1:192.168.42. "type": GETDNS_RRTYPE_TXT } ] +[ + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "expire": 345600, + "minimum": 300, + "mname":"ns.nlnetlabs.nl.", + "rdata_raw":[2,110,115,9,110,108,110,101,116,108,97,98,115,2,110,108,0,8,115,121,115,97,100,109,105,110,9,110,108,110,101,116,108,97,98,115,2,110,108,0,120,27,181,72,0,0,1,194,0,0,2,88,0,5,70,0,0,0,1,44], + "refresh": 450, + "retry": 600, + "rname":"sysadmin.nlnetlabs.nl.", + "serial": 2015081800 + }, + "ttl": 30, + "type": 6 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "nsdname":"ns.nlnetlabs.nl.", + "rdata_raw":"ns.nlnetlabs.nl." + }, + "ttl": 30, + "type": 2 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "nsdname":"ns.hactrn.net.", + "rdata_raw":"ns.hactrn.net." + }, + "ttl": 30, + "type": 2 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "nsdname":"mcvax.nlnet.nl.", + "rdata_raw":"mcvax.nlnet.nl." + }, + "ttl": 30, + "type": 2 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "nsdname":"sec2.authdns.ripe.net.", + "rdata_raw":"sec2.authdns.ripe.net." + }, + "ttl": 30, + "type": 2 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "ipv4_address":"185.49.140.22", + "rdata_raw":[185,49,140,22] + }, + "ttl": 30, + "type": 1 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "ipv6_address":"2a04:b900::2:0:0:22", + "rdata_raw":[42,4,185,0,0,0,0,0,0,2,0,0,0,0,0,34] + }, + "ttl": 30, + "type": 28 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "exchange":"dicht.nlnetlabs.nl.", + "preference": 10, + "rdata_raw":[0,10,5,100,105,99,104,116,9,110,108,110,101,116,108,97,98,115,2,110,108,0] + }, + "ttl": 30, + "type": 15 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "exchange":"mcvax.nlnet.nl.", + "preference": 20, + "rdata_raw":[0,20,5,109,99,118,97,120,5,110,108,110,101,116,2,110,108,0] + }, + "ttl": 30, + "type": 15 + }, + { + "class": 1, + "name":"net-dns.org.", + "rdata": + { + "rdata_raw":[16,78,101,116,58,58,68,78,83,32,32,100,111,109,97,105,110], + "txt_strings": + [ + "Net::DNS domain" + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"_443._tcp.net-dns.org.", + "rdata": + { + "certificate_association_data":[39,76,111,150,201,136,92,128,80,232,160,90,209,195,22,44,29,81,117,44,53,182,25,100,116,227,240,90,211,28,217,35], + "certificate_usage": 3, + "matching_type": 1, + "rdata_raw":[3,1,1,39,76,111,150,201,136,92,128,80,232,160,90,209,195,22,44,29,81,117,44,53,182,25,100,116,227,240,90,211,28,217,35], + "selector": 1 + }, + "ttl": 30, + "type": 52 + }, + { + "class": 1, + "name":"_443._tcp.www.net-dns.org.", + "rdata": + { + "certificate_association_data":[39,76,111,150,201,136,92,128,80,232,160,90,209,195,22,44,29,81,117,44,53,182,25,100,116,227,240,90,211,28,217,35], + "certificate_usage": 3, + "matching_type": 1, + "rdata_raw":[3,1,1,39,76,111,150,201,136,92,128,80,232,160,90,209,195,22,44,29,81,117,44,53,182,25,100,116,227,240,90,211,28,217,35], + "selector": 1 + }, + "ttl": 30, + "type": 52 + }, + { + "class": 1, + "name":"dynup.net-dns.org.", + "rdata": + { + "rdata_raw":[7,102,111,111,70,111,111,50,9,66,108,97,32,59,32,70,111,111], + "txt_strings": + [ + "fooFoo2", + "Bla ; Foo" + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"lists.net-dns.org.", + "rdata": + { + "ipv4_address":"63.209.15.196", + "rdata_raw":[63,209,15,196] + }, + "ttl": 30, + "type": 1 + }, + { + "class": 1, + "name":"localhost.net-dns.org.", + "rdata": + { + "ipv4_address":"127.0.0.1", + "rdata_raw":[127,0,0,1] + }, + "ttl": 30, + "type": 1 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,49,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 1 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,50,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 2 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,51,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 3 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,52,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 4 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,53,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 5 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,54,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 6 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,55,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 7 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,56,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 8 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[62,65,110,100,32,108,105,110,101,32,57,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 9 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,48,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 10 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,49,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 11 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,50,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 12 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,51,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 13 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,52,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 14 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,53,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 15 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,54,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 16 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,55,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 17 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,56,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 18 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,49,57,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 19 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,48,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 20 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,49,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 21 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,50,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 22 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,51,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 23 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,53,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 25 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,54,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 26 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,55,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 27 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,56,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 28 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,50,57,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 29 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,48,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 30 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,49,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 31 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,50,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 32 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,51,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 33 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,52,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 34 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,53,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 35 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,54,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 36 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,55,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 37 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,56,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 38 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,51,57,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 39 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,48,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 40 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,49,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 41 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,50,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 42 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,51,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 43 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,52,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 44 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,53,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 45 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,54,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 46 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,55,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 47 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,56,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 48 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,52,57,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 49 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,48,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 50 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,49,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 51 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,50,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 52 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,51,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 53 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,52,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 54 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,53,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 55 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,54,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 56 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,55,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 57 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,56,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 58 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,53,57,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 59 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[63,65,110,100,32,108,105,110,101,32,54,48,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 60 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[64,65,110,100,32,108,105,110,101,32,50,50,52,32,111,102,32,97,108,32,115,111,114,116,115,32,111,102,32,99,114,97,112,32,116,104,97,116,32,119,105,108,108,32,106,117,115,116,32,102,105,108,108,32,116,104,101,32,112,97,99,107,101,116,32], + "txt_strings": + [ + "And line 224 of al sorts of crap that will just fill the packet " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"overflow.net-dns.org.", + "rdata": + { + "rdata_raw":[69,65,110,32,105,110,99,114,101,97,100,105,98,108,121,32,108,97,114,103,101,32,97,110,115,119,101,114,32,115,101,99,116,105,111,110,32,116,104,97,116,32,119,105,108,108,32,108,101,97,100,32,116,111,32,112,97,99,107,101,116,32,111,118,101,114,102,108,111,119], + "txt_strings": + [ + "An increadibly large answer section that will lead to packet overflow" + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"t.net-dns.org.", + "rdata": + { + "rdata_raw":[49,84,104,101,32,110,97,109,101,115,32,119,105,116,104,105,110,32,116,104,105,115,32,100,111,109,97,105,110,32,97,114,101,32,117,115,101,100,32,102,111,114,32,116,101,115,116,105,110,103], + "txt_strings": + [ + "The names within this domain are used for testing" + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"a.t.net-dns.org.", + "rdata": + { + "ipv4_address":"10.0.1.128", + "rdata_raw":[10,0,1,128] + }, + "ttl": 30, + "type": 1 + }, + { + "class": 1, + "name":"a2.t.net-dns.org.", + "rdata": + { + "ipv4_address":"10.0.1.129", + "rdata_raw":[10,0,1,129] + }, + "ttl": 30, + "type": 1 + }, + { + "class": 1, + "name":"cname.t.net-dns.org.", + "rdata": + { + "cname":"a.t.net-dns.org.", + "rdata_raw":"a.t.net-dns.org." + }, + "ttl": 30, + "type": 5 + }, + { + "class": 1, + "name":"mx.t.net-dns.org.", + "rdata": + { + "exchange":"a.t.net-dns.org.", + "preference": 10, + "rdata_raw":[0,10,1,97,1,116,7,110,101,116,45,100,110,115,3,111,114,103,0] + }, + "ttl": 30, + "type": 15 + }, + { + "class": 1, + "name":"mx2.t.net-dns.org.", + "rdata": + { + "exchange":"a.t.net-dns.org.", + "preference": 10, + "rdata_raw":[0,10,1,97,1,116,7,110,101,116,45,100,110,115,3,111,114,103,0] + }, + "ttl": 30, + "type": 15 + }, + { + "class": 1, + "name":"mx2.t.net-dns.org.", + "rdata": + { + "exchange":"a2.t.net-dns.org.", + "preference": 15, + "rdata_raw":[0,15,2,97,50,1,116,7,110,101,116,45,100,110,115,3,111,114,103,0] + }, + "ttl": 30, + "type": 15 + }, + { + "class": 1, + "name":"txt.t.net-dns.org.", + "rdata": + { + "rdata_raw":[7,78,101,116,45,68,78,83], + "txt_strings": + [ + "Net-DNS" + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"txt2.t.net-dns.org.", + "rdata": + { + "rdata_raw":[26,78,101,116,45,68,78,83,59,32,99,111,109,112,108,105,99,97,116,101,100,32,36,116,117,102,102,33,115,111,114,116,32,111,102,32,34,32,116,101,120,116,59,32,97,110,100,32,98,105,110,97,114,121,32,0,32,100,97,116,97], + "txt_strings": + [ + "Net-DNS; complicated $tuff", + [115,111,114,116,32,111,102,32,34,32,116,101,120,116,59,32,97,110,100,32,98,105,110,97,114,121,32,0,32,100,97,116,97] + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"connection-test.t.net-dns.org.", + "rdata": + { + "rdata_raw":[22,99,111,110,110,101,99,116,105,111,110,45,116,101,115,116,32,115,117,99,99,101,115], + "txt_strings": + [ + "connection-test succes" + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"txt-utf8.t.net-dns.org.", + "rdata": + { + "rdata_raw":[9,229,143,164,230,177,160,227,130,132,12,232,155,153,233,163,155,232,190,188,227,130,128,9,230,176,180,227,129,174,233,159,179], + "txt_strings": + [ + [229,143,164,230,177,160,227,130,132], + [232,155,153,233,163,155,232,190,188,227,130,128], + [230,176,180,227,129,174,233,159,179] + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"txt-utf8-bin.t.net-dns.org.", + "rdata": + { + "rdata_raw":[9,229,143,164,230,177,160,227,130,132,12,232,155,153,233,163,155,232,190,188,227,130,128,9,230,176,180,227,129,174,233,159,179], + "txt_strings": + [ + [229,143,164,230,177,160,227,130,132], + [232,155,153,233,163,155,232,190,188,227,130,128], + [230,176,180,227,129,174,233,159,179] + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"a.few.empty.non.terminals.t.net-dns.org.", + "rdata": + { + "rdata_raw":[1,97,3,102,101,119,5,101,109,112,116,121,3,110,111,110,9,116,101,114,109,105,110,97,108,115], + "txt_strings": + [ + "a", + "few", + "empty", + "non", + "terminals" + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"a.few.empty.non.terminals.t.net-dns.org.", + "rdata": + { + "ipv4_address":"185.49.140.22", + "rdata_raw":[185,49,140,22] + }, + "ttl": 30, + "type": 1 + }, + { + "class": 1, + "name":"a.few.empty.non.terminals.t.net-dns.org.", + "rdata": + { + "ipv6_address":"2a04:b900::2:0:0:22", + "rdata_raw":[42,4,185,0,0,0,0,0,0,2,0,0,0,0,0,34] + }, + "ttl": 30, + "type": 28 + }, + { + "class": 1, + "name":"yx1.cname.t.net-dns.org.", + "rdata": + { + "cname":"-.t.net-dns.org.", + "rdata_raw":"-.t.net-dns.org." + }, + "ttl": 30, + "type": 5 + }, + { + "class": 1, + "name":"yx2.cname.t.net-dns.org.", + "rdata": + { + "cname":"a-a.t.net-dns.org.", + "rdata_raw":"a-a.t.net-dns.org." + }, + "ttl": 30, + "type": 5 + }, + { + "class": 1, + "name":"yx3.cname.t.net-dns.org.", + "rdata": + { + "cname":"a\..t.net-dns.org.", + "rdata_raw":"a\..t.net-dns.org." + }, + "ttl": 30, + "type": 5 + }, + { + "class": 1, + "name":"yx4.cname.t.net-dns.org.", + "rdata": + { + "cname":"a\000.t.net-dns.org.", + "rdata_raw":"a\000.t.net-dns.org." + }, + "ttl": 30, + "type": 5 + }, + { + "class": 1, + "name":"nx1.cname.t.net-dns.org.", + "rdata": + { + "cname":"does.not.exist.t.net-dns.org.", + "rdata_raw":"does.not.exist.t.net-dns.org." + }, + "ttl": 30, + "type": 5 + }, + { + "class": 1, + "name":"nx2.cname.t.net-dns.org.", + "rdata": + { + "cname":"empty.non.terminals.t.net-dns.org.", + "rdata_raw":"empty.non.terminals.t.net-dns.org." + }, + "ttl": 30, + "type": 5 + }, + { + "class": 1, + "name":"www.net-dns.org.", + "rdata": + { + "ipv4_address":"185.49.140.22", + "rdata_raw":[185,49,140,22] + }, + "ttl": 30, + "type": 1 + }, + { + "class": 1, + "name":"www.net-dns.org.", + "rdata": + { + "ipv6_address":"2a04:b900::2:0:0:22", + "rdata_raw":[42,4,185,0,0,0,0,0,0,2,0,0,0,0,0,34] + }, + "ttl": 30, + "type": 28 + }, + { + "class": 1, + "name":"apl.net-dns.org.", + "rdata": + { + "apitems": + [ + { + "address_family": 1, + "afdpart":[192,168,42], + "n": 0, + "prefix": 26 + }, + { + "address_family": 1, + "afdpart":[192,168,42,64], + "n": 0, + "prefix": 26 + }, + { + "address_family": 1, + "afdpart":[192,168,42,128], + "n": 1, + "prefix": 25 + }, + { + "address_family": 1, + "afdpart":[224], + "n": 0, + "prefix": 4 + }, + { + "address_family": 2, + "afdpart":[255], + "n": 0, + "prefix": 8 + } + ], + "rdata_raw":[0,1,26,3,192,168,42,0,1,26,4,192,168,42,64,0,1,25,132,192,168,42,128,0,1,4,1,224,0,2,8,1,255] + }, + "ttl": 30, + "type": 42 + }, + { + "class": 1, + "name":"ipseckey0.net-dns.org.", + "rdata": + { + "algorithm": 10, + "gateway_type": 0, + "precedence": 2, + "public_key":[1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1], + "rdata_raw":[10,0,2,1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1] + }, + "ttl": 30, + "type": 45 + }, + { + "class": 1, + "name":"ipseckey1.net-dns.org.", + "rdata": + { + "algorithm": 10, + "gateway":[192,0,2,38], + "gateway_type": 1, + "precedence": 2, + "public_key":[1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1], + "rdata_raw":[10,1,2,192,0,2,38,1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1] + }, + "ttl": 30, + "type": 45 + }, + { + "class": 1, + "name":"ipseckey2.net-dns.org.", + "rdata": + { + "algorithm": 10, + "gateway":[32,1,13,184,0,0,128,2,0,0,0,0,32,0,0,1], + "gateway_type": 2, + "precedence": 2, + "public_key":[1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1], + "rdata_raw":[10,2,2,32,1,13,184,0,0,128,2,0,0,0,0,32,0,0,1,1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1] + }, + "ttl": 30, + "type": 45 + }, + { + "class": 1, + "name":"ipseckey3.net-dns.org.", + "rdata": + { + "algorithm": 10, + "gateway":"mygateway.example.com.", + "gateway_type": 3, + "precedence": 2, + "public_key":[1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1], + "rdata_raw":[10,3,2,9,109,121,103,97,116,101,119,97,121,7,101,120,97,109,112,108,101,3,99,111,109,0,1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1] + }, + "ttl": 30, + "type": 45 + }, + { + "class": 1, + "name":"ipseckey.net-dns.org.", + "rdata": + { + "algorithm": 10, + "gateway_type": 0, + "precedence": 2, + "public_key":[1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1], + "rdata_raw":[10,0,2,1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1] + }, + "ttl": 30, + "type": 45 + }, + { + "class": 1, + "name":"ipseckey.net-dns.org.", + "rdata": + { + "algorithm": 10, + "gateway":[192,0,2,38], + "gateway_type": 1, + "precedence": 2, + "public_key":[1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1], + "rdata_raw":[10,1,2,192,0,2,38,1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1] + }, + "ttl": 30, + "type": 45 + }, + { + "class": 1, + "name":"ipseckey.net-dns.org.", + "rdata": + { + "algorithm": 10, + "gateway":[32,1,13,184,0,0,128,2,0,0,0,0,32,0,0,1], + "gateway_type": 2, + "precedence": 2, + "public_key":[1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1], + "rdata_raw":[10,2,2,32,1,13,184,0,0,128,2,0,0,0,0,32,0,0,1,1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1] + }, + "ttl": 30, + "type": 45 + }, + { + "class": 1, + "name":"ipseckey.net-dns.org.", + "rdata": + { + "algorithm": 10, + "gateway":"mygateway.example.com.", + "gateway_type": 3, + "precedence": 2, + "public_key":[1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1], + "rdata_raw":[10,3,2,9,109,121,103,97,116,101,119,97,121,7,101,120,97,109,112,108,101,3,99,111,109,0,1,3,81,83,121,134,237,53,83,59,96,100,71,142,238,178,123,91,215,77,174,20,155,110,129,186,58,5,33,175,130,171,120,1] + }, + "ttl": 30, + "type": 45 + }, + { + "class": 1, + "name":"default._domainkey.net-dns.org.", + "rdata": + { + "rdata_raw":[253,118,61,68,75,73,77,49,59,32,114,61,112,111,115,116,109,97,115,116,101,114,59,32,103,61,42,59,32,107,61,114,115,97,59,32,112,61,77,73,71,102,77,65,48,71,67,83,113,71,83,73,98,51,68,81,69,66,65,81,85,65,65,52,71,78,65,68,67,66,105,81,75,66,103,81,68,86,71,47,108,102,70,53,71,116,80,108,77,79,99,83,71,110,102,98,112,53,117,43,69,87,77,43,79,79,103,47,102,54,81,109,98,68,88,79,87,47,122,75,81,107,82,73,82,73,90,43,66,116,102,83,89,99,104,80,56,77,101,70,80,102,77,118,85,90,116,100,82,80,122,67,87,103,49,71,55,79,100,68,55,113,97,84,85,113,99,54,107,86,56,52,111,110,54,47,56,107,80,86,77,103,100,68,76,121,76,108,50,68,101,85,47,76,116,115,57,104,102,86,72,86,68,83,112,87,117,67,104,119,68,65,70,88,110,98,110,87,56,106,112,112,53,52,122,117,111,102,57,79,73,98,87,83,87,73,120,90,113,76,76,56,102,108,103,79,115,81,73,68,65,81,65,66], + "txt_strings": + [ + "v=DKIM1; r=postmaster; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVG/lfF5GtPlMOcSGnfbp5u+EWM+OOg/f6QmbDXOW/zKQkRIRIZ+BtfSYchP8MeFPfMvUZtdRPzCWg1G7OdD7qaTUqc6kV84on6/8kPVMgdDLyLl2DeU/Lts9hfVHVDSpWuChwDAFXnbnW8jpp54zuof9OIbWSWIxZqLL8flgOsQIDAQAB" + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"2.3.3.updates.spamassassin.net-dns.org.", + "rdata": + { + "rdata_raw":[8,49,52,49,56,50,49,57,32], + "txt_strings": + [ + "1418219 " + ] + }, + "ttl": 30, + "type": 16 + }, + { + "class": 1, + "name":"mirrors.updates.spamassassin.net-dns.org.", + "rdata": + { + "rdata_raw":[60,104,116,116,112,58,47,47,97,110,111,110,121,109,111,117,115,64,115,112,97,109,97,115,115,97,115,115,105,110,46,97,112,97,99,104,101,46,111,114,103,47,117,112,100,97,116,101,115,47,77,73,82,82,79,82,69,68,46,66,89], + "txt_strings": + [ + "http://anonymous@spamassassin.apache.org/updates/MIRRORED.BY" + ] + }, + "ttl": 30, + "type": 16 + } +] record 0, available buffer space: 8117 record 1, available buffer space: 8077 record 2, available buffer space: 8039 diff --git a/src/test/tpkg/265-supported-rrs.tpkg/265-supported-rrs.good b/src/test/tpkg/265-supported-rrs.tpkg/265-supported-rrs.good index 5ac86a9a..6db36868 100644 --- a/src/test/tpkg/265-supported-rrs.tpkg/265-supported-rrs.good +++ b/src/test/tpkg/265-supported-rrs.tpkg/265-supported-rrs.good @@ -918,9 +918,23 @@ "rdata": { "certificate_association_data": , - "certificate_usage": 3, + "certificate_usage": 0, "matching_type": 1, - "rdata_raw": , + "rdata_raw": , + "selector": 0 + }, + "ttl": 30, + "type": GETDNS_RRTYPE_TLSA + }, + { + "class": GETDNS_RRCLASS_IN, + "name": , + "rdata": + { + "certificate_association_data": , + "certificate_usage": 1, + "matching_type": 2, + "rdata_raw": , "selector": 1 }, "ttl": 30, @@ -1008,7 +1022,7 @@ } ] ;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 0 -;; flags: ; QUERY: 0, ANSWER: 77, AUTHORITY: 0, ADDITIONAL: 0 +;; flags: ; QUERY: 0, ANSWER: 78, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;; ANSWER SECTION: @@ -1082,7 +1096,8 @@ spf.net-dns.org. 30 IN SPF "v=spf1 +mx a:colo.nlnetlabs.nl/28 -all" srv.net-dns.org. 30 IN SRV 0 5 80 www.net-dns.org. sshfp.net-dns.org. 30 IN SSHFP 1 1 450C7D19D5DA9A3A5B7C19992D1FBDE15D8DAD44 talink.net-dns.org. 30 IN TALINK h0.net-dns.org. h2.net-dns.org. -_443._tcp.net-dns.org. 30 IN TLSA 3 1 1 274C6F96C9885C8050E8A05AD1C3162C1D51752C35B6196474E3F05AD31CD923 +_443._tcp.net-dns.org. 30 IN TLSA 0 0 1 274C6F96C9885C8050E8A05AD1C3162C1D51752C35B6196474E3F05AD31CD923 +_443._tcp.ww.net-dns.org. 30 IN TLSA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA346BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE51FFD48C43326CBC _443._tcp.www.net-dns.org. 30 IN TLSA 3 1 1 274C6F96C9885C8050E8A05AD1C3162C1D51752C35B6196474E3F05AD31CD923 dynup.net-dns.org. 30 IN TXT "fooFoo2" "Bla ; Foo" default._domainkey.net-dns.org. 30 IN TXT "v=DKIM1; r=postmaster; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVG/lfF5GtPlMOcSGnfbp5u+EWM+OOg/f6QmbDXOW/zKQkRIRIZ+BtfSYchP8MeFPfMvUZtdRPzCWg1G7OdD7qaTUqc6kV84on6/8kPVMgdDLyLl2DeU/Lts9hfVHVDSpWuChwDAFXnbnW8jpp54zuof9OIbWSWIxZqLL8flgOsQIDAQAB" @@ -1093,5 +1108,5 @@ x25.net-dns.org. 30 IN X25 "1234567" ;; AUTHORITY SECTION: ;; ADDITIONAL SECTION: -;; MSG SIZE rcvd: 6561 +;; MSG SIZE rcvd: 6664 diff --git a/src/test/tpkg/265-supported-rrs.tpkg/265-supported-rrs.net-dns.org b/src/test/tpkg/265-supported-rrs.tpkg/265-supported-rrs.net-dns.org index 5dc23b6b..2275afd4 100644 --- a/src/test/tpkg/265-supported-rrs.tpkg/265-supported-rrs.net-dns.org +++ b/src/test/tpkg/265-supported-rrs.tpkg/265-supported-rrs.net-dns.org @@ -94,7 +94,8 @@ sshfp SSHFP 1 1 450c7d19d5da9a3a5b7c19992d1fbde15d8dad44 ;ta TA talink TALINK h0 h2 ;tkey TKEY -_443._tcp TLSA 3 1 1 274c6f96c9885c8050e8a05ad1c3162c1d51752c35b6196474e3f05ad31cd923 +_443._tcp TLSA 0 0 1 274c6f96c9885c8050e8a05ad1c3162c1d51752c35b6196474e3f05ad31cd923 +_443._tcp.ww TLSA 1 1 2 92003ba34942dc74152e2f2c408d29eca5a520e7f2e06bb944f4dca346baf63c1b177615d466f6c4b71c216a50292bd58c9ebdd2f74e38fe51ffd48c43326cbc _443._tcp.www TLSA 3 1 1 274c6f96c9885c8050e8a05ad1c3162c1d51752c35b6196474e3f05ad31cd923 ;tsig TSIG dynup TXT "fooFoo2" "Bla \; Foo" diff --git a/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test b/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test index c6539115..e80948e0 100644 --- a/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test +++ b/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test @@ -5,10 +5,4 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build-event-loops" -if make test -then - if grep ERROR "${BUILDDIR}/build-event-loops/src/test/*.log" - then - exit 1 - fi -fi +make test From e12736590051f2e4e6c39a2232f284ccaa54e483 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 10 May 2017 14:10:29 +0200 Subject: [PATCH 02/35] Parallel testing support --- Makefile.in | 8 +++--- src/test/Makefile.in | 27 ++++++++++++++---- src/test/check_getdns_context_set_timeout.c | 21 ++++++++++++-- src/test/check_getdns_transport.c | 28 +++++++++++++++---- .../070-coding-practice.test | 6 ++++ 5 files changed, 73 insertions(+), 17 deletions(-) diff --git a/Makefile.in b/Makefile.in index 1e0cd3d1..fadb2f9b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -98,16 +98,16 @@ example: cd spec/example && $(MAKE) $@ test: default - cd src && $(MAKE) $@ + cd src/test && $(MAKE) $@ getdns_query: default - cd src && $(MAKE) $@ + cd src/tools && $(MAKE) $@ stubby: getdns_query - cd src && $(MAKE) $@ + cd src/tools && $(MAKE) $@ scratchpad: default - cd src && $(MAKE) $@ + cd src/test && $(MAKE) $@ pad: scratchpad src/test/scratchpad || ./libtool exec gdb src/test/scratchpad diff --git a/src/test/Makefile.in b/src/test/Makefile.in index 758435c1..9d4dad00 100644 --- a/src/test/Makefile.in +++ b/src/test/Makefile.in @@ -148,13 +148,28 @@ nolibcheck: @echo "***" @false -test: $(NOLIBCHECK) all - (cd $(srcdir)/../.. && find . -type f -executable -and \( -name "*.[ch]" -or -name "*.html" -or -name "*.in" -or -name "*.good" -or -name "*.ac" \) | awk 'BEGIN{e=0}{print("ERROR! Executable bit found on", $$0);e=1}END{exit(e)}') +test_noeventloop: $(NOLIBCHECK) all + rm -f $(CHECK_GETDNS).failed + GETDNS_TEST_PORT=43210 CK_TIMEOUT_MULTIPLIER=2 CK_LOG_FILE_NAME="$(CHECK_GETDNS).log" ./$(CHECK_GETDNS) || echo "$(CHECK_GETDNS) failed" >> $(CHECK_GETDNS).failed + +test_libevent: $(NOLIBCHECK) all + rm -f $(CHECK_EVENT_PROG).failed + if test $(have_libevent) = 1 ; then GETDNS_TEST_PORT=44321 CK_TIMEOUT_MULTIPLIER=2 CK_LOG_FILE_NAME="$(CHECK_EVENT_PROG).log" ./$(CHECK_EVENT_PROG) || echo "$(CHECK_EVENT_PROG) failed" >> $(CHECK_EVENT_PROG).failed; fi + +test_libev: $(NOLIBCHECK) all + rm -f $(CHECK_EV_PROG).failed + if test $(have_libev) = 1 ; then GETDNS_TEST_PORT=45432 CK_TIMEOUT_MULTIPLIER=2 CK_LOG_FILE_NAME="$(CHECK_EV_PROG).log" ./$(CHECK_EV_PROG) || echo "$(CHECK_EV_PROG) failed" >> $(CHECK_EV_PROG).failed; fi + +test_libuv: $(NOLIBCHECK) all + rm -f $(CHECK_UV_PROG).failed + if test $(have_libev) = 1 ; then GETDNS_TEST_PORT=46543 CK_TIMEOUT_MULTIPLIER=2 CK_LOG_FILE_NAME="$(CHECK_UV_PROG).log" ./$(CHECK_UV_PROG) || echo "$(CHECK_UV_PROG) failed" >> $(CHECK_UV_PROG).failed; fi + +test: test_noeventloop test_libevent test_libev test_libuv rm -f fails - CK_TIMEOUT_MULTIPLIER=2 CK_LOG_FILE_NAME="$(CHECK_GETDNS).log" ./$(CHECK_GETDNS) || echo "$(CHECK_GETDNS) failed" >> fails - if test $(have_libevent) = 1 ; then CK_TIMEOUT_MULTIPLIER=2 CK_LOG_FILE_NAME="$(CHECK_EVENT_PROG).log" ./$(CHECK_EVENT_PROG) || echo "$(CHECK_EVENT_PROG) failed" >> fails; fi - if test $(have_libev) = 1 ; then CK_TIMEOUT_MULTIPLIER=2 CK_LOG_FILE_NAME="$(CHECK_EV_PROG).log" ./$(CHECK_EV_PROG) || echo "$(CHECK_EV_PROG) failed" >> fails; fi - if test $(have_libuv) = 1 ; then CK_TIMEOUT_MULTIPLIER=2 CK_LOG_FILE_NAME="$(CHECK_UV_PROG).log" ./$(CHECK_UV_PROG) || echo "$(CHECK_UV_PROG) failed" >> fails; fi + if test -f $(CHECK_GETDNS).failed ; then cat $(CHECK_GETDNS).failed >> fails ; fi + if test -f $(CHECK_EVENT_PROG).failed ; then cat $(CHECK_EVENT_PROG).failed >> fails ; fi + if test -f $(CHECK_EV_PROG).failed ; then cat $(CHECK_EV_PROG).failed >> fails ; fi + if test -f $(CHECK_UV_PROG).failed ; then cat $(CHECK_UV_PROG).failed >> fails ; fi test ! -e fails @echo "All tests OK" diff --git a/src/test/check_getdns_context_set_timeout.c b/src/test/check_getdns_context_set_timeout.c index 26d25aa5..6dd65306 100644 --- a/src/test/check_getdns_context_set_timeout.c +++ b/src/test/check_getdns_context_set_timeout.c @@ -114,6 +114,23 @@ END_TEST #define GETDNS_STR_ADDRESS_TYPE "address_type" #define GETDNS_STR_ADDRESS_DATA "address_data" #define GETDNS_STR_PORT "port" +#define TEST_PORT 43210 + +static uint16_t get_test_port(void) +{ + char *test_port_str; + uint16_t test_port; + struct timeval tv; + + if (!(test_port_str = getenv("GETDNS_TEST_PORT")) || + !(test_port = (uint16_t)atoi(test_port_str))) + test_port = TEST_PORT; + + (void)gettimeofday(&tv, NULL); + srandom((int)getpid() + (int)tv.tv_usec); + test_port += random() % 1000; + return test_port; +} /* utilities to start a junk udp listener */ typedef struct timeout_thread_data { @@ -281,7 +298,7 @@ START_TEST (getdns_context_set_timeout_3) t_data.running = 0; t_data.num_callbacks = 0; t_data.num_timeouts = 0; - t_data.port = 43210; + t_data.port = get_test_port(); pthread_create(&thread, NULL, run_server, (void *)&t_data); @@ -301,7 +318,7 @@ START_TEST (getdns_context_set_timeout_3) bindata.data = (uint8_t*) &local_addr; ASSERT_RC(getdns_dict_set_bindata(server_dict, GETDNS_STR_ADDRESS_DATA, &bindata), GETDNS_RETURN_GOOD, "set addr bindata"); - ASSERT_RC(getdns_dict_set_int(server_dict, GETDNS_STR_PORT, 43210), + ASSERT_RC(getdns_dict_set_int(server_dict, GETDNS_STR_PORT, t_data.port), GETDNS_RETURN_GOOD, "set addr port"); upstream_list = getdns_list_create_with_context(context); diff --git a/src/test/check_getdns_transport.c b/src/test/check_getdns_transport.c index 4b93fdd1..bf457257 100644 --- a/src/test/check_getdns_transport.c +++ b/src/test/check_getdns_transport.c @@ -35,6 +35,8 @@ #include #include #include +#include +#include #define GETDNS_STR_IPV4 "IPv4" @@ -42,7 +44,23 @@ #define GETDNS_STR_ADDRESS_TYPE "address_type" #define GETDNS_STR_ADDRESS_DATA "address_data" #define GETDNS_STR_PORT "port" -#define TEST_PORT 43210 +#define TEST_PORT 42100 + +static uint16_t get_test_port(void) +{ + char *test_port_str; + uint16_t test_port; + struct timeval tv; + + if (!(test_port_str = getenv("GETDNS_TEST_PORT")) || + !(test_port = (uint16_t)atoi(test_port_str))) + test_port = TEST_PORT; + + (void)gettimeofday(&tv, NULL); + srandom((int)getpid() + (int)tv.tv_usec); + test_port += random() % 1000; + return test_port; +} /* utilities to start a junk listener */ typedef struct transport_thread_data { @@ -219,7 +237,7 @@ START_TEST(getdns_transport_udp_sync) { t_data.running = 0; t_data.udp_count = 0; t_data.tcp_count = 0; - t_data.port = TEST_PORT; + t_data.port = get_test_port(); pthread_create(&thread, NULL, run_transport_server, (void *) &t_data); @@ -293,7 +311,7 @@ START_TEST(getdns_transport_tcp_sync) { t_data.running = 0; t_data.udp_count = 0; t_data.tcp_count = 0; - t_data.port = TEST_PORT; + t_data.port = get_test_port(); pthread_create(&thread, NULL, run_transport_server, (void *) &t_data); @@ -367,7 +385,7 @@ START_TEST(getdns_transport_udp_async) { t_data.running = 0; t_data.udp_count = 0; t_data.tcp_count = 0; - t_data.port = TEST_PORT; + t_data.port = get_test_port(); pthread_create(&thread, NULL, run_transport_server, (void *) &t_data); @@ -445,7 +463,7 @@ START_TEST(getdns_transport_tcp_async) { t_data.running = 0; t_data.udp_count = 0; t_data.tcp_count = 0; - t_data.port = TEST_PORT; + t_data.port = get_test_port(); pthread_create(&thread, NULL, run_transport_server, (void *) &t_data); diff --git a/src/test/tpkg/070-coding-practice.tpkg/070-coding-practice.test b/src/test/tpkg/070-coding-practice.tpkg/070-coding-practice.test index 09473687..a2b5aa1d 100644 --- a/src/test/tpkg/070-coding-practice.tpkg/070-coding-practice.test +++ b/src/test/tpkg/070-coding-practice.tpkg/070-coding-practice.test @@ -4,7 +4,13 @@ # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test +(cd $(srcdir)/../.. && ) + rm -f report.txt +( + cd ${SRCROOT} + find . -type f -executable -and \( -name "*.[ch]" -or -name "*.html" -or -name "*.in" -or -name "*.good" -or -name "*.ac" \) | sed 's/^/*** ERROR! Executable bit found on /g' +) >> report.txt ( cd ${SRCROOT}/src if [ `grep '[^!=]=[ ][ ]*NET_REQ_' *.[ch] */*.[ch] | wc -l` -gt 1 ] From 1eae032743ac42c60983a41e3456805e39f6708b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 10 May 2017 14:35:01 +0200 Subject: [PATCH 03/35] tpkg tests build in parallel --- .../tpkg/070-coding-practice.tpkg/070-coding-practice.test | 2 -- src/test/tpkg/100-compile.tpkg/100-compile.test | 2 +- src/test/tpkg/105-install.tpkg/105-install.test | 2 +- src/test/tpkg/110-link.tpkg/110-link.test | 2 +- src/test/tpkg/115-install-linked.tpkg/115-install-linked.test | 2 +- .../200-stub-only-compile.tpkg/200-stub-only-compile.test | 2 +- src/test/tpkg/210-stub-only-link.tpkg/210-stub-only-link.test | 2 +- .../230-stub-only-run-unit-tests.test | 2 +- .../320-event-loops-compile.tpkg/320-event-loops-compile.test | 2 +- .../330-event-loops-unit-tests.test | 2 +- .../340-event-loops-scan-build.test | 4 ++-- src/test/tpkg/run-all-lcov.sh | 2 +- 12 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/test/tpkg/070-coding-practice.tpkg/070-coding-practice.test b/src/test/tpkg/070-coding-practice.tpkg/070-coding-practice.test index a2b5aa1d..ae4b12fa 100644 --- a/src/test/tpkg/070-coding-practice.tpkg/070-coding-practice.test +++ b/src/test/tpkg/070-coding-practice.tpkg/070-coding-practice.test @@ -4,8 +4,6 @@ # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test -(cd $(srcdir)/../.. && ) - rm -f report.txt ( cd ${SRCROOT} diff --git a/src/test/tpkg/100-compile.tpkg/100-compile.test b/src/test/tpkg/100-compile.tpkg/100-compile.test index 819c1bb3..aeb9e084 100644 --- a/src/test/tpkg/100-compile.tpkg/100-compile.test +++ b/src/test/tpkg/100-compile.tpkg/100-compile.test @@ -5,4 +5,4 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build" -make XTRA_CFLAGS='-Werror' +make XTRA_CFLAGS='-Werror' -j 4 diff --git a/src/test/tpkg/105-install.tpkg/105-install.test b/src/test/tpkg/105-install.tpkg/105-install.test index 7e94ce6e..16ccbfd2 100644 --- a/src/test/tpkg/105-install.tpkg/105-install.test +++ b/src/test/tpkg/105-install.tpkg/105-install.test @@ -5,4 +5,4 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build" -make install +make -j 4 install diff --git a/src/test/tpkg/110-link.tpkg/110-link.test b/src/test/tpkg/110-link.tpkg/110-link.test index 424c9074..305132fb 100644 --- a/src/test/tpkg/110-link.tpkg/110-link.test +++ b/src/test/tpkg/110-link.tpkg/110-link.test @@ -5,6 +5,6 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build" -make getdns_query \ +make -j 4 getdns_query \ && echo "export GETDNS_QUERY=\"${BUILDDIR}/build/src/tools/getdns_query\"" \ >> ../.tpkg.var.master diff --git a/src/test/tpkg/115-install-linked.tpkg/115-install-linked.test b/src/test/tpkg/115-install-linked.tpkg/115-install-linked.test index 7480aa03..550052b4 100644 --- a/src/test/tpkg/115-install-linked.tpkg/115-install-linked.test +++ b/src/test/tpkg/115-install-linked.tpkg/115-install-linked.test @@ -5,4 +5,4 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build" -make install-getdns_query +make -j 4 install-getdns_query diff --git a/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.test b/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.test index 144fea4b..4b983110 100644 --- a/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.test +++ b/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.test @@ -5,4 +5,4 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build-stub-only" -make XTRA_CFLAGS='-Werror' +make XTRA_CFLAGS='-Werror' -j 4 diff --git a/src/test/tpkg/210-stub-only-link.tpkg/210-stub-only-link.test b/src/test/tpkg/210-stub-only-link.tpkg/210-stub-only-link.test index 94aaf626..23e786cb 100644 --- a/src/test/tpkg/210-stub-only-link.tpkg/210-stub-only-link.test +++ b/src/test/tpkg/210-stub-only-link.tpkg/210-stub-only-link.test @@ -5,6 +5,6 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build-stub-only" -make getdns_query \ +make -j 4 getdns_query \ && echo "export GETDNS_STUB_QUERY=\"${BUILDDIR}/build-stub-only/src/tools/getdns_query\"" \ >> ../.tpkg.var.master diff --git a/src/test/tpkg/230-stub-only-run-unit-tests.tpkg/230-stub-only-run-unit-tests.test b/src/test/tpkg/230-stub-only-run-unit-tests.tpkg/230-stub-only-run-unit-tests.test index 1dee289d..5122d39a 100644 --- a/src/test/tpkg/230-stub-only-run-unit-tests.tpkg/230-stub-only-run-unit-tests.test +++ b/src/test/tpkg/230-stub-only-run-unit-tests.tpkg/230-stub-only-run-unit-tests.test @@ -5,4 +5,4 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build-stub-only" -make test +make -j 4 test diff --git a/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.test b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.test index 1be03f3d..b4d20345 100644 --- a/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.test +++ b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.test @@ -5,4 +5,4 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build-event-loops" -make XTRA_CFLAGS=-Werror +make XTRA_CFLAGS=-Werror -j 4 diff --git a/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test b/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test index c6539115..92e3d214 100644 --- a/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test +++ b/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test @@ -5,7 +5,7 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build-event-loops" -if make test +if make -j 4 test then if grep ERROR "${BUILDDIR}/build-event-loops/src/test/*.log" then diff --git a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.test b/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.test index c72c4061..99aff40a 100644 --- a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.test +++ b/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.test @@ -5,5 +5,5 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test cd "${BUILDDIR}/build-event-loops" -make clean -scan-build -o ../scan-build-reports -v --status-bugs make everything +make -j 4 clean +scan-build -o ../scan-build-reports -v --status-bugs make -j 4 everything diff --git a/src/test/tpkg/run-all-lcov.sh b/src/test/tpkg/run-all-lcov.sh index 37bf8cea..8a083980 100755 --- a/src/test/tpkg/run-all-lcov.sh +++ b/src/test/tpkg/run-all-lcov.sh @@ -15,7 +15,7 @@ LCOV_MERGE="" for TEST_PKG in ${SRCDIR}/*.tpkg do # when we run our test, we need to compile with profiling - LDFLAGS="-lgcov --coverage" CFLAGS="-fprofile-arcs -ftest-coverage -O0" "${TPKG}" $* exe "${TEST_PKG}" + LDFLAGS="-lgcov --coverage" CFLAGS="-g -fprofile-arcs -ftest-coverage -O0" "${TPKG}" $* exe "${TEST_PKG}" # after the test is complete, we need to collect the coverage data INFO_FILE=`echo $TEST_PKG | sed 's/.tpkg$//'`.info geninfo $SRCDIR/.. -o $INFO_FILE From e1528425731b8835dc98d0ef2a2f4cd5f87b68a3 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 10 May 2017 14:39:59 +0200 Subject: [PATCH 04/35] Fail event-loops-unit-tests tpkg when tests fail --- .../330-event-loops-unit-tests.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test b/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test index 92e3d214..31a7dd1f 100644 --- a/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test +++ b/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test @@ -7,7 +7,7 @@ cd "${BUILDDIR}/build-event-loops" if make -j 4 test then - if grep ERROR "${BUILDDIR}/build-event-loops/src/test/*.log" + if test -e "${BUILDDIR}/build-event-loops/src/test/fails" then exit 1 fi From 6ca0b8b48165c64c20f88554fba7356aa86f6559 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 10 May 2017 16:35:32 +0200 Subject: [PATCH 05/35] Run tpkg tests in parallel too --- .travis.yml | 2 +- src/Makefile.in | 32 +++++++-------- .../320-event-loops-compile.dsc | 2 +- .../340-event-loops-scan-build.dsc | 16 -------- .../340-event-loops-scan-build.pre | 24 ------------ .../400-static-analysis.dsc | 16 ++++++++ .../400-static-analysis.post} | 4 +- .../400-static-analysis.pre | 35 +++++++++++++++++ .../400-static-analysis.test} | 5 +-- src/test/tpkg/clean.sh | 2 +- src/test/tpkg/run-parallel.sh | 39 +++++++++++++++++++ 11 files changed, 111 insertions(+), 66 deletions(-) delete mode 100644 src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.dsc delete mode 100644 src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.pre create mode 100644 src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.dsc rename src/test/tpkg/{340-event-loops-scan-build.tpkg/340-event-loops-scan-build.post => 400-static-analysis.tpkg/400-static-analysis.post} (80%) create mode 100644 src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.pre rename src/test/tpkg/{340-event-loops-scan-build.tpkg/340-event-loops-scan-build.test => 400-static-analysis.tpkg/400-static-analysis.test} (74%) create mode 100755 src/test/tpkg/run-parallel.sh diff --git a/.travis.yml b/.travis.yml index 98b98d95..33a6c780 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ addons: script: - mkdir tests - cd tests - - ../src/test/tpkg/run-all.sh + - ../src/test/tpkg/run-parallel.sh diff --git a/src/Makefile.in b/src/Makefile.in index 2342e250..38c7c4d9 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -221,8 +221,8 @@ const-info.lo const-info.o: $(srcdir)/const-info.c \ getdns/getdns_extra.h \ $(srcdir)/const-info.h context.lo context.o: $(srcdir)/context.c \ - config.h \ - $(srcdir)/debug.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/wire2str.h $(srcdir)/context.h \ + config.h $(srcdir)/debug.h \ + $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/wire2str.h $(srcdir)/context.h \ getdns/getdns.h \ getdns/getdns_extra.h \ $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h \ @@ -257,8 +257,7 @@ dict.lo dict.o: $(srcdir)/dict.c \ $(srcdir)/gldns/pkthdr.h $(srcdir)/dict.h $(srcdir)/list.h $(srcdir)/const-info.h $(srcdir)/gldns/wire2str.h \ $(srcdir)/gldns/parseutil.h dnssec.lo dnssec.o: $(srcdir)/dnssec.c \ - config.h \ - $(srcdir)/debug.h \ + config.h $(srcdir)/debug.h \ getdns/getdns.h \ $(srcdir)/context.h \ getdns/getdns_extra.h \ @@ -272,8 +271,7 @@ dnssec.lo dnssec.o: $(srcdir)/dnssec.c \ $(srcdir)/general.h $(srcdir)/dict.h $(srcdir)/list.h $(srcdir)/util/val_secalgo.h \ $(srcdir)/util/orig-headers/val_secalgo.h general.lo general.o: $(srcdir)/general.c \ - config.h \ - $(srcdir)/general.h \ + config.h $(srcdir)/general.h \ getdns/getdns.h \ $(srcdir)/types-internal.h \ getdns/getdns_extra.h \ @@ -288,15 +286,15 @@ list.lo list.o: $(srcdir)/list.c $(srcdir)/types-internal.h \ getdns/getdns.h \ getdns/getdns_extra.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h $(srcdir)/util-internal.h \ - config.h \ - $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h $(srcdir)/extension/poll_eventloop.h \ + config.h $(srcdir)/context.h \ + $(srcdir)/extension/default_eventloop.h $(srcdir)/extension/poll_eventloop.h \ $(srcdir)/types-internal.h $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/server.h $(srcdir)/util/lruhash.h \ $(srcdir)/util/orig-headers/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/orig-headers/locks.h \ $(srcdir)/util/auxiliary/util/log.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h \ $(srcdir)/gldns/pkthdr.h $(srcdir)/list.h $(srcdir)/dict.h mdns.lo mdns.o: $(srcdir)/mdns.c \ - config.h \ - $(srcdir)/debug.h $(srcdir)/context.h \ + config.h $(srcdir)/debug.h \ + $(srcdir)/context.h \ getdns/getdns.h \ getdns/getdns_extra.h \ $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h \ @@ -308,8 +306,7 @@ mdns.lo mdns.o: $(srcdir)/mdns.c \ $(srcdir)/util/auxiliary/util/fptr_wlist.h $(srcdir)/util/lookup3.h \ $(srcdir)/util/orig-headers/lookup3.h pubkey-pinning.lo pubkey-pinning.o: $(srcdir)/pubkey-pinning.c \ - config.h \ - $(srcdir)/debug.h \ + config.h $(srcdir)/debug.h \ getdns/getdns.h \ $(srcdir)/context.h \ getdns/getdns_extra.h \ @@ -355,8 +352,8 @@ server.lo server.o: $(srcdir)/server.c \ $(srcdir)/util/orig-headers/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/orig-headers/locks.h \ $(srcdir)/util/auxiliary/util/log.h $(srcdir)/debug.h stub.lo stub.o: $(srcdir)/stub.c \ - config.h \ - $(srcdir)/debug.h $(srcdir)/stub.h \ + config.h $(srcdir)/debug.h \ + $(srcdir)/stub.h \ getdns/getdns.h \ $(srcdir)/types-internal.h \ getdns/getdns_extra.h \ @@ -369,8 +366,7 @@ stub.lo stub.o: $(srcdir)/stub.c \ $(srcdir)/util-internal.h $(srcdir)/general.h $(srcdir)/pubkey-pinning.h sync.lo sync.o: $(srcdir)/sync.c \ getdns/getdns.h \ - config.h \ - $(srcdir)/context.h \ + config.h $(srcdir)/context.h \ getdns/getdns_extra.h \ $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h \ $(srcdir)/extension/default_eventloop.h $(srcdir)/extension/poll_eventloop.h \ @@ -483,8 +479,8 @@ libevent.lo libevent.o: $(srcdir)/extension/libevent.c \ getdns/getdns_extra.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h $(srcdir)/getdns/getdns_ext_libevent.h libuv.lo libuv.o: $(srcdir)/extension/libuv.c \ - config.h \ - $(srcdir)/debug.h $(srcdir)/types-internal.h \ + config.h $(srcdir)/debug.h \ + $(srcdir)/types-internal.h \ getdns/getdns.h \ getdns/getdns_extra.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h $(srcdir)/getdns/getdns_ext_libuv.h diff --git a/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.dsc b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.dsc index 61defe2c..c06a540e 100644 --- a/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.dsc +++ b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.dsc @@ -6,7 +6,7 @@ Maintainer: Willem Toorop Category: Component: CmdDepends: -Depends: 300-event-loops-configure.tpkg +Depends: 310-dependencies.tpkg Help: Pre: 320-event-loops-compile.pre Post: 320-event-loops-compile.post diff --git a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.dsc b/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.dsc deleted file mode 100644 index 685708a2..00000000 --- a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.dsc +++ /dev/null @@ -1,16 +0,0 @@ -BaseName: 340-event-loops-scan-build -Version: 1.0 -Description: Compile -CreationDate: do 28 apr 2016 16:50:43 CEST -Maintainer: Willem Toorop -Category: -Component: -CmdDepends: scan-build -Depends: 300-event-loops-configure.tpkg -Help: -Pre: 340-event-loops-scan-build.pre -Post: 340-event-loops-scan-build.post -Test: 340-event-loops-scan-build.test -AuxFiles: -Passed: -Failure: diff --git a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.pre b/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.pre deleted file mode 100644 index 14ea1b2a..00000000 --- a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.pre +++ /dev/null @@ -1,24 +0,0 @@ -# #-- 340-event-loops-scan-build.pre--# -# source the master var file when it's there -if [ -f ../.tpkg.var.master ] -then - source ../.tpkg.var.master -else - ( - cd .. - [ -f "${TPKG_SRCDIR}/setup-env.sh" ] \ - && sh "${TPKG_SRCDIR}/setup-env.sh" - ) && source ../.tpkg.var.master -fi -# use .tpkg.var.test for in test variable passing -[ -f .tpkg.var.test ] && source .tpkg.var.test - -echo "" > restore-srcdir-configure-settings -for f in `grep 'CONFIG_[FH][IE][LA][ED][SE]' "${SRCROOT}/configure.ac" | sed -e 's/^.*(\[//g' -e 's/\])//g'` -do - if [ -f "${SRCROOT}/$f" ] - then - mv "${SRCROOT}/${f}" "${SRCROOT}/${f}.build-event-loops" && \ - echo "$f" >> restore-srcdir-configure-settings - fi -done diff --git a/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.dsc b/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.dsc new file mode 100644 index 00000000..33cf7bb3 --- /dev/null +++ b/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.dsc @@ -0,0 +1,16 @@ +BaseName: 400-static-analysis +Version: 1.0 +Description: Compile +CreationDate: wo 10 mei 2017 14:56:19 CEST +Maintainer: Willem Toorop +Category: +Component: +CmdDepends: scan-build +Depends: +Help: +Pre: 400-static-analysis.pre +Post: 400-static-analysis.post +Test: 400-static-analysis.test +AuxFiles: +Passed: +Failure: diff --git a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.post b/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.post similarity index 80% rename from src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.post rename to src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.post index 4ad0e7a8..5551a73d 100644 --- a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.post +++ b/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.post @@ -1,4 +1,4 @@ -# #-- 340-event-loops-scan-build.post --# +# #-- 400-static-analysis.post --# # source the master var file when it's there if [ -f ../.tpkg.var.master ] then @@ -15,6 +15,6 @@ fi for f in `cat restore-srcdir-configure-settings` do - mv "${SRCROOT}/${f}.build-event-loops" "${SRCROOT}/${f}" + mv "${SRCROOT}/${f}.build-static-analysis" "${SRCROOT}/${f}" done diff --git a/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.pre b/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.pre new file mode 100644 index 00000000..bda600f8 --- /dev/null +++ b/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.pre @@ -0,0 +1,35 @@ +# #-- 400-static-analysis.pre--# +# source the master var file when it's there +if [ -f ../.tpkg.var.master ] +then + source ../.tpkg.var.master +else + ( + cd .. + [ -f "${TPKG_SRCDIR}/setup-env.sh" ] \ + && sh "${TPKG_SRCDIR}/setup-env.sh" + ) && source ../.tpkg.var.master +fi +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +echo "" > restore-srcdir-configure-settings +for f in `grep 'CONFIG_[FH][IE][LA][ED][SE]' "${SRCROOT}/configure.ac" | sed -e 's/^.*(\[//g' -e 's/\])//g'` +do + if [ -f "${SRCROOT}/$f" ] + then + mv "${SRCROOT}/${f}" "${SRCROOT}/${f}.build-static-analysis" && \ + echo "$f" >> restore-srcdir-configure-settings + fi +done +rm -fr "${BUILDDIR}/build-static-analysis" +mkdir "${BUILDDIR}/build-static-analysis" +cd "${BUILDDIR}/build-static-analysis" +"${SRCROOT}/configure" $* --enable-all-drafts --with-getdns_query --with-libevent --with-libev --with-libuv \ + || "${SRCROOT}/configure" $* --enable-all-drafts --with-getdns_query --with-libevent --with-libev \ + || "${SRCROOT}/configure" $* --enable-all-drafts --with-getdns_query --with-libevent --with-libuv \ + || "${SRCROOT}/configure" $* --enable-all-drafts --with-getdns_query --with-libev --with-libuv \ + || "${SRCROOT}/configure" $* --enable-all-drafts --with-getdns_query --with-libevent \ + || "${SRCROOT}/configure" $* --enable-all-drafts --with-getdns_query --with-libev \ + || "${SRCROOT}/configure" $* --enable-all-drafts --with-getdns_query --with-libuv + diff --git a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.test b/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.test similarity index 74% rename from src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.test rename to src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.test index 99aff40a..132a9eff 100644 --- a/src/test/tpkg/340-event-loops-scan-build.tpkg/340-event-loops-scan-build.test +++ b/src/test/tpkg/400-static-analysis.tpkg/400-static-analysis.test @@ -1,9 +1,8 @@ -# #-- 340-event-loops-scan-build.test --# +# #-- 400-static-analysis.test --# # source the master var file when it's there [ -f ../.tpkg.var.master ] && source ../.tpkg.var.master # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test -cd "${BUILDDIR}/build-event-loops" -make -j 4 clean +cd "${BUILDDIR}/build-static-analysis" scan-build -o ../scan-build-reports -v --status-bugs make -j 4 everything diff --git a/src/test/tpkg/clean.sh b/src/test/tpkg/clean.sh index e71f3114..60e4ef42 100755 --- a/src/test/tpkg/clean.sh +++ b/src/test/tpkg/clean.sh @@ -3,5 +3,5 @@ export SRCDIR=`dirname $0` ( cd $SRCDIR ./tpkg clean - rm -fr build build-stub-only build-event-loops install scan-build-reports .tpkg.var.master *.info + rm -fr build build-stub-only build-event-loops build-static-analysis install scan-build-reports .tpkg.var.master *.info ) diff --git a/src/test/tpkg/run-parallel.sh b/src/test/tpkg/run-parallel.sh new file mode 100755 index 00000000..7e72998c --- /dev/null +++ b/src/test/tpkg/run-parallel.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +export SRCDIR=`dirname $0` +. `dirname $0`/setup-env.sh + +cat > Makefile << MAKEFILE_HEADER +all: retry results + +retry: + for f in result.* ; do if test ! -e .done-\$\${f#result.} ; then rm -f \$\$f ; fi; done + +MAKEFILE_HEADER + +ALL="results:" +for TEST_PKG in ${SRCDIR}/*.tpkg +do + P=${TEST_PKG#${SRCDIR}/} + P=${P%.tpkg} + DONE="result.$P" + ALL="$ALL $DONE" +done +echo $ALL >> Makefile +printf '\t"%s" r\n\n' "${TPKG}" >> Makefile +printf 'clean:\n\t"%s" clean\n\trm -fr build build-stub-only build-event-loops build-static-analysis install scan-build-reports .tpkg.var.master *.info\n\n' "${TPKG}" >> Makefile +for TEST_PKG in ${SRCDIR}/*.tpkg +do + P=${TEST_PKG#${SRCDIR}/} + P=${P%.tpkg} + DONE="result.$P:" + for D in `grep "^Depends: " "${TEST_PKG}/${P}.dsc" | sed 's/^Depends: //g'` + do + D=${D%.tpkg} + DONE="$DONE result.$D" + done + echo $DONE >> Makefile + printf '\t"%s" %s exe "%s"\n\n' "${TPKG}" "$*" "${TEST_PKG}" >> Makefile + echo "" >> Makefile +done +make -j 2 From b2d09e017124d662d8cd4fdb27c294f6584d115e Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 10 May 2017 16:43:46 +0200 Subject: [PATCH 06/35] Don't run resource depletion tests in parallel --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 33a6c780..98b98d95 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ addons: script: - mkdir tests - cd tests - - ../src/test/tpkg/run-parallel.sh + - ../src/test/tpkg/run-all.sh From 053845332d580c28ba4cd2a82a5e0179e75177c1 Mon Sep 17 00:00:00 2001 From: Hoda Rohani Date: Wed, 10 May 2017 16:47:51 +0200 Subject: [PATCH 07/35] adding more get functions to the tests --- src/test/check_getdns_context_create.h | 4 ++++ ...check_getdns_context_set_context_update_callback.h | 11 ++++++++++- src/test/check_getdns_context_set_timeout.c | 8 +++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/test/check_getdns_context_create.h b/src/test/check_getdns_context_create.h index eb965200..11188198 100644 --- a/src/test/check_getdns_context_create.h +++ b/src/test/check_getdns_context_create.h @@ -55,9 +55,13 @@ * GETDNS_RETURN_GOOD */ struct getdns_context *context = NULL; + getdns_append_name_t append_name; CONTEXT_CREATE(TRUE); // TODO: Do something here to verify set_from_os = TRUE + getdns_context_set_append_name(context, GETDNS_APPEND_NAME_TO_SINGLE_LABEL_FIRST); + getdns_context_get_append_name(context, &append_name); + ck_assert_msg(append_name == GETDNS_APPEND_NAME_TO_SINGLE_LABEL_FIRST, "suffix is not correct"); CONTEXT_DESTROY; } END_TEST diff --git a/src/test/check_getdns_context_set_context_update_callback.h b/src/test/check_getdns_context_set_context_update_callback.h index 77926664..1694905f 100644 --- a/src/test/check_getdns_context_set_context_update_callback.h +++ b/src/test/check_getdns_context_set_context_update_callback.h @@ -111,6 +111,8 @@ */ struct getdns_context *context = NULL; getdns_namespace_t namespace_arr[2] = {GETDNS_NAMESPACE_DNS, GETDNS_NAMESPACE_LOCALNAMES}; + size_t count; + getdns_namespace_t *namespaces; CONTEXT_CREATE(TRUE); ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn), @@ -118,8 +120,12 @@ expected_changed_item = GETDNS_CONTEXT_CODE_NAMESPACES; - ASSERT_RC(getdns_context_set_namespaces(context, 2,namespace_arr), + ASSERT_RC(getdns_context_set_namespaces(context, 2, namespace_arr), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_namespaces()"); + ASSERT_RC(getdns_context_get_namespaces(context, &count, &namespaces), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_namespaces()"); + ck_assert_msg(count == 2 && namespaces[0] == 500 && namespaces[1] == 501, "namespaces are not correctly set"); + CONTEXT_DESTROY; @@ -207,6 +213,7 @@ * expect: GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS */ struct getdns_context *context = NULL; + getdns_redirects_t redir; CONTEXT_CREATE(TRUE); ASSERT_RC(getdns_context_set_context_update_callback(context, update_callbackfn), @@ -215,6 +222,8 @@ expected_changed_item = GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS; (void) getdns_context_set_follow_redirects(context, GETDNS_REDIRECTS_DO_NOT_FOLLOW); + (void) getdns_context_get_follow_redirects(context, &redir); + ck_assert_msg(redir == GETDNS_REDIRECTS_DO_NOT_FOLLOW, "getdns_context_get_follow_redirects failed"); CONTEXT_DESTROY; diff --git a/src/test/check_getdns_context_set_timeout.c b/src/test/check_getdns_context_set_timeout.c index 893608cb..9ca5619c 100644 --- a/src/test/check_getdns_context_set_timeout.c +++ b/src/test/check_getdns_context_set_timeout.c @@ -94,15 +94,21 @@ END_TEST START_TEST (getdns_context_set_idle_timeout_2) { /* - * timeout is 0 + * timeout is 0 and then 100 * expect: GETDNS_RETURN_GOOD */ struct getdns_context *context = NULL; + uint64_t time; CONTEXT_CREATE(TRUE); ASSERT_RC(getdns_context_set_idle_timeout(context, 0), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_timeout()"); + ASSERT_RC(getdns_context_set_idle_timeout(context, 100), + GETDNS_RETURN_GOOD, "Return code from getdns_context_set_timeout()"); + ASSERT_RC(getdns_context_get_idle_timeout(context, &time), + GETDNS_RETURN_GOOD, "Return code from getdns_context_set_timeout()"); + ck_assert_msg(time == 100, "idle_timeout should be 100, got %d", (int)time); CONTEXT_DESTROY; From 760b813333cdbf432d3e89e79e572018240809c5 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 10 May 2017 23:01:57 +0200 Subject: [PATCH 08/35] Schedule resource depletion tpkg's sequentually --- .travis.yml | 2 +- .../280-limit_outstanding_queries.dsc | 2 +- .../285-out_of_filedescriptors.dsc | 2 +- src/test/tpkg/run-parallel.sh | 46 +++++++++++++------ 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 98b98d95..33a6c780 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ addons: script: - mkdir tests - cd tests - - ../src/test/tpkg/run-all.sh + - ../src/test/tpkg/run-parallel.sh diff --git a/src/test/tpkg/280-limit_outstanding_queries.tpkg/280-limit_outstanding_queries.dsc b/src/test/tpkg/280-limit_outstanding_queries.tpkg/280-limit_outstanding_queries.dsc index f1f0aa4b..d03124b9 100644 --- a/src/test/tpkg/280-limit_outstanding_queries.tpkg/280-limit_outstanding_queries.dsc +++ b/src/test/tpkg/280-limit_outstanding_queries.tpkg/280-limit_outstanding_queries.dsc @@ -3,7 +3,7 @@ Version: 1.0 Description: Test if outstanding queries setting is obeyed CreationDate: Tue Mar 14 10:43:45 CET 2017 Maintainer: Willem Toorop -Category: +Category: Resource depletion Component: CmdDepends: Depends: 210-stub-only-link.tpkg diff --git a/src/test/tpkg/285-out_of_filedescriptors.tpkg/285-out_of_filedescriptors.dsc b/src/test/tpkg/285-out_of_filedescriptors.tpkg/285-out_of_filedescriptors.dsc index 6b00775a..c76c3bbb 100644 --- a/src/test/tpkg/285-out_of_filedescriptors.tpkg/285-out_of_filedescriptors.dsc +++ b/src/test/tpkg/285-out_of_filedescriptors.tpkg/285-out_of_filedescriptors.dsc @@ -3,7 +3,7 @@ Version: 1.0 Description: Test if outstanding queries setting is obeyed CreationDate: ma 20 mrt 2017 15:17:45 CET Maintainer: Willem Toorop -Category: +Category: Resource depletion Component: CmdDepends: Depends: 210-stub-only-link.tpkg diff --git a/src/test/tpkg/run-parallel.sh b/src/test/tpkg/run-parallel.sh index 7e72998c..6943839d 100755 --- a/src/test/tpkg/run-parallel.sh +++ b/src/test/tpkg/run-parallel.sh @@ -11,29 +11,45 @@ retry: MAKEFILE_HEADER +# Resource depletion tests should be performed one-by-one after all +# other tests have been done. +# +RD_TESTS="" +OTHERS="" ALL="results:" -for TEST_PKG in ${SRCDIR}/*.tpkg +for TEST_PKG in `echo ${SRCDIR}/*.tpkg | xargs -n1 echo | sort` do - P=${TEST_PKG#${SRCDIR}/} - P=${P%.tpkg} - DONE="result.$P" - ALL="$ALL $DONE" + P="${TEST_PKG#${SRCDIR}/}" + P="${P%.tpkg}" + R="result.${P}" + ALL="${ALL} ${R}" + if grep -q 'Category:.*Resource depletion' "${TEST_PKG}/${P}.dsc" + then + RD_TESTS="${R} ${RD_TESTS}" + else + OTHERS="${OTHERS} ${R}" + fi done -echo $ALL >> Makefile +echo "${ALL}" >> Makefile printf '\t"%s" r\n\n' "${TPKG}" >> Makefile printf 'clean:\n\t"%s" clean\n\trm -fr build build-stub-only build-event-loops build-static-analysis install scan-build-reports .tpkg.var.master *.info\n\n' "${TPKG}" >> Makefile -for TEST_PKG in ${SRCDIR}/*.tpkg +for P in ${OTHERS} do - P=${TEST_PKG#${SRCDIR}/} - P=${P%.tpkg} - DONE="result.$P:" + P="${P#result.}" + TEST_PKG="${SRCDIR}/${P}.tpkg" + DEPS="result.${P}:" for D in `grep "^Depends: " "${TEST_PKG}/${P}.dsc" | sed 's/^Depends: //g'` do - D=${D%.tpkg} - DONE="$DONE result.$D" + D="${D%.tpkg}" + DEPS="${DEPS} result.${D}" done - echo $DONE >> Makefile + echo "${DEPS}" >> Makefile printf '\t"%s" %s exe "%s"\n\n' "${TPKG}" "$*" "${TEST_PKG}" >> Makefile - echo "" >> Makefile done -make -j 2 +for RD in ${RD_TESTS} +do + RD_TESTS="${RD_TESTS#$RD }" + TEST_PKG="${RD#result.}" + printf '%s: %s %s\n\t"%s" %s exe "%s/%s.tpkg"\n\n' "${RD}" "${OTHERS}" "${RD_TESTS}" "${TPKG}" "$*" "${SRCDIR}" "${TEST_PKG}" >> Makefile +done +#make -j 2 From 3d4193fa4136bf51c6803c0d4251ada10d70ecb7 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 10 May 2017 23:04:31 +0200 Subject: [PATCH 09/35] Actually start building! --- src/test/tpkg/run-parallel.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/tpkg/run-parallel.sh b/src/test/tpkg/run-parallel.sh index 6943839d..a3ef22e0 100755 --- a/src/test/tpkg/run-parallel.sh +++ b/src/test/tpkg/run-parallel.sh @@ -52,4 +52,4 @@ do TEST_PKG="${RD#result.}" printf '%s: %s %s\n\t"%s" %s exe "%s/%s.tpkg"\n\n' "${RD}" "${OTHERS}" "${RD_TESTS}" "${TPKG}" "$*" "${SRCDIR}" "${TEST_PKG}" >> Makefile done -#make -j 2 +make -j 2 From 21fe94c06ed635691373e3287a26effc6529833b Mon Sep 17 00:00:00 2001 From: Hoda Rohani Date: Mon, 15 May 2017 14:49:48 +0200 Subject: [PATCH 10/35] copy transport test to tpkg and extend more to check tsig add unit test for tls connection --- .../check_getdns_context_set_dns_transport.h | 68 +++++- .../290-transports.tpkg/290-transports.dsc | 16 ++ .../290-transports.tpkg/290-transports.test | 200 ++++++++++++++++++ 3 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 src/test/tpkg/290-transports.tpkg/290-transports.dsc create mode 100644 src/test/tpkg/290-transports.tpkg/290-transports.test diff --git a/src/test/check_getdns_context_set_dns_transport.h b/src/test/check_getdns_context_set_dns_transport.h index 93362071..f76ee74b 100644 --- a/src/test/check_getdns_context_set_dns_transport.h +++ b/src/test/check_getdns_context_set_dns_transport.h @@ -288,7 +288,9 @@ * suspect them to be a bit more reliable. */ struct getdns_list *root_servers = getdns_list_create(); + struct getdns_list *root_servers2 = getdns_list_create(); struct getdns_bindata nlnetlabs_root = { 4, (void *)"\xB9\x31\x8D\x25" }; + struct getdns_bindata *answer = NULL; uint32_t status; uint32_t type; @@ -304,10 +306,17 @@ /* Re-do over TCP */ ASSERT_RC(getdns_dict_set_int(extensions,"return_call_reporting", GETDNS_EXTENSION_TRUE), GETDNS_RETURN_GOOD, "Return code from getdns_dict_set_int()"); - ASSERT_RC(getdns_list_set_bindata(root_servers,0,&nlnetlabs_root), + ASSERT_RC(getdns_list_set_bindata(root_servers, 0, &nlnetlabs_root), GETDNS_RETURN_GOOD, "Return code from getdns_list_set_bindata()"); + ASSERT_RC(getdns_context_set_dns_root_servers(context, root_servers), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_root_servers()"); + ASSERT_RC(getdns_context_get_dns_root_servers(context, &root_servers2), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_dns_root_servers()"); + ASSERT_RC(getdns_list_get_bindata(root_servers2, 0, &answer), + GETDNS_RETURN_GOOD, "Return code from getdns_list_get_bindata()"); + ck_assert_msg(strncmp((char *)answer->data, (char *)nlnetlabs_root.data, 4) == 0, + "Expected answer data to be 185.49.141.37"); ASSERT_RC(getdns_context_set_dns_transport(context, GETDNS_TRANSPORT_TCP_ONLY), GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_transport()"); ASSERT_RC(getdns_context_set_edns_maximum_udp_payload_size(context, 512), @@ -375,6 +384,60 @@ } END_TEST + START_TEST (getdns_context_set_dns_transport_recursing_9) + { + /* + * Check TLS + */ + struct getdns_context *context = NULL; + getdns_resolution_t resolution_type; + getdns_transport_list_t transport_list[1]; + getdns_transport_list_t *transport_list2; + size_t count; + getdns_tls_authentication_t auth; + uint16_t backoff; + uint16_t retries; + + transport_list[0] = GETDNS_TRANSPORT_TLS; + + CONTEXT_CREATE(TRUE); + + ASSERT_RC(getdns_context_set_resolution_type(context, GETDNS_RESOLUTION_STUB), + GETDNS_RETURN_GOOD, "Return code from getdns_context_set_resolution_type()"); + ASSERT_RC(getdns_context_get_resolution_type(context, &resolution_type), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_resolution_type()"); + ck_assert_msg(resolution_type == GETDNS_RESOLUTION_STUB, "resolution_type should be stub (520), got %d", (int)resolution_type); + + ASSERT_RC(getdns_context_set_dns_transport_list(context, 1, transport_list), + GETDNS_RETURN_GOOD, "Return code from getdns_context_set_dns_transport_list()"); + ASSERT_RC(getdns_context_get_dns_transport_list(context, &count, &transport_list2), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_dns_transport_list()"); + ck_assert_msg(transport_list2[0] == GETDNS_TRANSPORT_TLS, "transport_list should be 1202 but got %d", (int) transport_list2[0]); + + ASSERT_RC(getdns_context_set_tls_authentication(context, GETDNS_AUTHENTICATION_REQUIRED), + GETDNS_RETURN_GOOD, "Return cond from getdns_context_set_tls_authentication()"); + ASSERT_RC(getdns_context_get_tls_authentication(context, &auth), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_tls_authentication()"); + ck_assert_msg(auth == 1301, "tls_authentication should be 1301, but got %d", (int) auth); + + ASSERT_RC(getdns_context_set_tls_backoff_time(context, 1000), + GETDNS_RETURN_GOOD, "Return code from getdns_context_set_tls_backoff_time()"); + ASSERT_RC(getdns_context_get_tls_backoff_time(context, &backoff), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_tls_backoff_time()"); + ck_assert_msg(backoff == 1000, "backoff should be 1000, but got %d", (int) backoff); + + ASSERT_RC(getdns_context_set_tls_connection_retries(context, 5), + GETDNS_RETURN_GOOD, "Return code from getdns_context_set_tls_connection_retries()"); + ASSERT_RC(getdns_context_get_tls_connection_retries(context, &retries), + GETDNS_RETURN_GOOD, "Return code from getdns_context_get_tls_connection_retries()"); + ck_assert_msg(retries == 5, "retries should be 5 but got %d", (int) retries); + + /*TODO: should extend the test */ + CONTEXT_DESTROY; + + } + END_TEST + @@ -399,7 +462,8 @@ tcase_add_test(tc_pos, getdns_context_set_dns_transport_recursing_6); tcase_add_test(tc_pos, getdns_context_set_dns_transport_recursing_7); tcase_add_test(tc_pos, getdns_context_set_dns_transport_recursing_8); - /* TODO: TLS... */ + /* TLS */ + tcase_add_test(tc_pos, getdns_context_set_dns_transport_recursing_9); suite_add_tcase(s, tc_pos); diff --git a/src/test/tpkg/290-transports.tpkg/290-transports.dsc b/src/test/tpkg/290-transports.tpkg/290-transports.dsc new file mode 100644 index 00000000..8508f07a --- /dev/null +++ b/src/test/tpkg/290-transports.tpkg/290-transports.dsc @@ -0,0 +1,16 @@ +BaseName: 290-transports +Version: 1.0 +Description: Run the test_transports +CreationDate: di 9 mei 2017 14:16:58 CEST +Maintainer: Hoda Rohani +Category: +Component: +CmdDepends: +Depends: 110-link.tpkg +Help: +Pre: +Post: +Test: 290-transports.test +AuxFiles: +Passed: +Failure: diff --git a/src/test/tpkg/290-transports.tpkg/290-transports.test b/src/test/tpkg/290-transports.tpkg/290-transports.test new file mode 100644 index 00000000..31b1c6ee --- /dev/null +++ b/src/test/tpkg/290-transports.tpkg/290-transports.test @@ -0,0 +1,200 @@ +# #-- 290-transports.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +SERVER_IP="8.8.8.8" +SERVER_IPv6="2001:4860:4860::8888" + +SERVER_IP_TSIG="185.49.141.37^" +SERVER_IPv6_TSIG="2a04:b900:0:100::37^" +TSIG_ALG="hmac-md5.sig-alg.reg.int" +TSIG_NAME="hmac-md5.tsigs.getdnsapi.net" +TSIG_SECRET="16G69OTeXW6xSQ==" + +TLS_SERVER_IP="185.49.141.38~getdnsapi.net" +TLS_SERVER_IPv6="2a04:b900:0:100::38~getdnsapi.net" +TLS_SERVER_KEY="foxZRnIh9gZpWnl+zEiKa0EJ2rdCGroMWm02gaxSc9S=" +TLS_SERVER_WRONG_KEY="foxZRnIh9gZpWnl+zEiKa0EJ2rdCGroMWm02gaxSc1S=" + +TLS_SERVER_SS_IP="184.105.193.78~tls-dns-u.odvr.dns-oarc.net" #Self signed cert +TLS_SERVER_SS_KEY="pOXrpUt9kgPgbWxBFFcBTbRH2heo2wHwXp1fd4AEVXI=" + +GOOD_RESULT_SYNC="Status was: At least one response was returned" +GOOD_RESULT_ASYNC="successful" +BAD_RESULT_SYNC="1 'Generic error'" +BAD_RESULT_ASYNC="callback_type of 703" +BAD_RESULT_TRANSPORT="None of the configured upstreams could be used to send queries on the specified transports" +BAD_RESULT_NO_NAME="GETDNS_RESPSTATUS_NO_NAME" +NUM_ARGS=3 +GOOD_COUNT=0 +FAIL_COUNT=0 + + +check_auth () { + local my_auth_ok=0; + auth_result=`echo $1 | sed 's/.*tls_auth_status\": .*//'` + if [[ $2 == "-" ]] ; then + my_auth_ok=1; + fi + if [[ $2 == "N" ]] && [[ $auth_result == "None" ]]; then + my_auth_ok=1; + fi + if [[ $2 == "F" ]] && [[ $auth_result == "Failed" ]]; then + my_auth_ok=1; + fi + if [[ $2 == "S" ]] && [[ $auth_result == "Success" ]]; then + my_auth_ok=1; + fi + echo $my_auth_ok; +} + +check_trans () { + local my_trans_ok=0; + trans_result=`echo $1 | sed "s/.*\"transport\": GETDNS_TRANSPORT_//" | sed 's/ }.*//' | sed 's/,.*//'` + if [[ $2 == "U" ]] && [[ $trans_result == "UDP" ]]; then + my_trans_ok=1; + fi + if [[ $2 == "T" ]] && [[ $trans_result == "TCP" ]]; then + my_trans_ok=1; + fi + if [[ $2 == "L" ]] && [[ $trans_result == "TLS" ]]; then + my_trans_ok=1; + fi + echo $my_trans_ok; +} + +check_good () { + auth_ok=0; + result_ok=0; + trans_ok=0; + result=`echo $1 | sed 's/ All done.'// | sed 's/.*Response code was: GOOD. '//` + async_success=`echo $result | grep -c "$GOOD_RESULT_ASYNC"` + if [[ $result =~ $GOOD_RESULT_SYNC ]] || [[ $async_success =~ 1 ]]; then + result_ok=1; + fi + if [[ $result_ok == 1 ]] ; then + trans_ok=$(check_trans "$1" "$2") + auth_ok=$(check_auth "$1" "$3") + fi + if [[ $result_ok == 1 ]] && [[ $auth_ok == 1 ]] && [[ $trans_ok == 1 ]]; then + (( GOOD_COUNT++ )) + echo -n "PASS: " + else + (( FAIL_COUNT++ )) + echo "FAIL (RESULT): Result: $result Auth: $auth_ok Trans: $trans_ok" + echo -n "FAIL: " + fi +} + +check_bad () { + result=`echo $1 | grep "An error occurred:" | tail -1 | sed 's/ All done.'//` + error=` echo $result | sed 's/An error occurred: //'` + + if [[ -z $result ]]; then + result=`echo $1 | grep "GETDNS_RESPSTATUS_NO_NAME" ` + error=` echo $result | sed 's/"status": //'` + fi + + if [[ ! -z $result ]]; then + if [[ $error =~ $BAD_RESULT_SYNC ]] || [[ $error =~ $BAD_RESULT_ASYNC ]] || [[ $error =~ $BAD_RESULT_TRANSPORT ]] || [[ $error =~ $BAD_RESULT_NO_NAME ]]; then + (( GOOD_COUNT++ )) + echo -n "PASS:" + else + (( FAIL_COUNT++ )) + echo "FAIL (RESULT): " $error + echo -n "FAIL: " + fi + else + (( FAIL_COUNT++ )) + echo "FAIL (RESULT): " $1 + echo -n "FAIL: " + fi +} + +for (( ii = 0; ii < 2; ii++)); do + if [[ ii -eq 1 ]]; then + SERVER_IP=$SERVER_IPv6 + TLS_SERVER_IP=$TLS_SERVER_IPv6 + SERVER_IP_TSIG=$SERVER_IPv6_TSIG + echo "Using IPv6" + fi + TLS_SERVER_IP_NO_NAME=`echo ${TLS_SERVER_IP%~*}` + TLS_SERVER_SS_IP_NO_NAME=`echo ${TLS_SERVER_SS_IP%~*}` + TLS_SERVER_IP_WRONG_NAME=`echo ${TLS_SERVER_IP::${#TLS_SERVER_IP}-1}` + SERVER_IP_TSIG_WRONG_NAME=`echo ${SERVER_IP_TSIG}${TSIG_ALG}":"${TSIG_NAME::${#TSIG_NAME}-1}":"${TSIG_SECRET}` + SERVER_IP_TSIG_WRONG_SECRET=`echo ${SERVER_IP_TSIG}${TSIG_ALG}":"${TSIG_NAME}":"${TSIG_SECRET::${#TSIG_SECRET}-1}` + + NUM_GOOD_QUERIES=10 + GOOD_QUERIES=( + "-s -A getdnsapi.net -l U @${SERVER_IP} +edns_cookies" "U" "-" + "-s -A getdnsapi.net -l T @${SERVER_IP}" "T" "-" + "-s -A getdnsapi.net -l U @${SERVER_IP_TSIG}${TSIG_ALG}:${TSIG_NAME}:${TSIG_SECRET}" "U" "-" + "-s -A getdnsapi.net -l U @${SERVER_IP_TSIG}${TSIG_NAME}:${TSIG_SECRET}" "U" "-" + "-s -A getdnsapi.net -l L @${TLS_SERVER_IP_NO_NAME}" "L" "N" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP}" "L" "S" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_KEY}\"" "L" "S" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP} -K pin-sha256=\"${TLS_SERVER_KEY}\"" "L" "S" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_SS_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_SS_KEY}\"" "L" "S" + "-s -G DNSKEY getdnsapi.net -l U @${SERVER_IP} -b 512 -D" "U" "-") + + NUM_GOOD_FB_QUERIES=6 + GOOD_FALLBACK_QUERIES=( + "-s -A getdnsapi.net -l LU @${SERVER_IP}" "U" "-" + "-s -A getdnsapi.net -l LT @${SERVER_IP}" "T" "-" + "-s -A getdnsapi.net -l LT @${TLS_SERVER_IP_NO_NAME}" "L" "N" + "-s -A getdnsapi.net -l LT -m @${TLS_SERVER_IP_NO_NAME}" "L" "N" + "-s -A getdnsapi.net -l L @${SERVER_IP} @${TLS_SERVER_IP_NO_NAME}" "L" "-" + "-s -G DNSKEY getdnsapi.net -l UT @${SERVER_IP} -b 512 -D" "T" "-") + + NOT_AVAILABLE_QUERIES=( + "-s -A getdnsapi.net -l L @${SERVER_IP}" + "-s -A getdnsapi.net -l U @${SERVER_IP_TSIG_WRONG_NAME}" + "-s -A getdnsapi.net -l U @${SERVER_IP_TSIG_WRONG_SECRET}" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME}" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_NO_NAME}" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\"" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\"" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME} -K pin-sha256=\"${TLS_SERVER_KEY}\"" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\"" + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_SS_IP} -K pin-sha256=\"${TLS_SERVER_SS_KEY}\"") + + + echo "Starting transport test" + echo + for (( i = 0; i < 2; i+=1 )); do + if [[ i -eq 0 ]]; then + echo "**SYNC Mode**" + else + echo + echo "**ASYNC Mode**" + SYNC_MODE=" -a " + fi + echo "*Success cases:" + for (( j = 0; j < $NUM_GOOD_QUERIES; j+=1 )); do + check_good "`"${GETDNS_QUERY}" +return_call_reporting $SYNC_MODE ${GOOD_QUERIES[$j*$NUM_ARGS]} `" ${GOOD_QUERIES[$((j*NUM_ARGS))+1]} ${GOOD_QUERIES[$((j*NUM_ARGS))+2]} + echo "getdns_query $SYNC_MODE ${GOOD_QUERIES[$j*$NUM_ARGS]}" + (( COUNT++ )) + done + + echo "*Success fallback cases:" + for (( j = 0; j < $NUM_GOOD_FB_QUERIES; j+=1 )); do + check_good "`"${GETDNS_QUERY}" +return_call_reporting $SYNC_MODE ${GOOD_FALLBACK_QUERIES[$j*$NUM_ARGS]} 2>/dev/null`" ${GOOD_FALLBACK_QUERIES[$((j*NUM_ARGS))+1]} ${GOOD_FALLBACK_QUERIES[$((j*NUM_ARGS))+2]} + echo "getdns_query $SYNC_MODE ${GOOD_FALLBACK_QUERIES[$j*$NUM_ARGS]} TESTS: ${GOOD_FALLBACK_QUERIES[$((j*NUM_ARGS))+1]} ${GOOD_FALLBACK_QUERIES[$((j*NUM_ARGS))+2]}" + (( COUNT++ )) + done + + echo "*Transport not available cases:" + for (( j = 0; j < ${#NOT_AVAILABLE_QUERIES[@]}; j+=1 )); do + check_bad "`"${GETDNS_QUERY}" $SYNC_MODE ${NOT_AVAILABLE_QUERIES[${j}]} 2>&1`" + echo "getdns_query $SYNC_MODE ${NOT_AVAILABLE_QUERIES[${j}]}" + (( COUNT++ )) + done + done + echo +done + +echo +echo "Finished transport test: did $COUNT queries, $GOOD_COUNT passes, $FAIL_COUNT failures" +echo From 1e99398576b28da85e92e7e701568b3229312ff2 Mon Sep 17 00:00:00 2001 From: Hoda Rohani Date: Mon, 22 May 2017 16:59:07 +0200 Subject: [PATCH 11/35] travis doesn't support ipv6? --- src/test/tpkg/290-transports.tpkg/290-transports.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/tpkg/290-transports.tpkg/290-transports.test b/src/test/tpkg/290-transports.tpkg/290-transports.test index 31b1c6ee..9d66cfee 100644 --- a/src/test/tpkg/290-transports.tpkg/290-transports.test +++ b/src/test/tpkg/290-transports.tpkg/290-transports.test @@ -112,8 +112,8 @@ check_bad () { echo -n "FAIL: " fi } - -for (( ii = 0; ii < 2; ii++)); do +# disable IPv6, travis cannot handle it? +for (( ii = 0; ii < 1; ii++)); do if [[ ii -eq 1 ]]; then SERVER_IP=$SERVER_IPv6 TLS_SERVER_IP=$TLS_SERVER_IPv6 From 8c27d285a8718d0bef5a5f1b8abee7faa9e90398 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 23 May 2017 16:04:31 +0200 Subject: [PATCH 12/35] Dependencies --- src/Makefile.in | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/Makefile.in b/src/Makefile.in index 38c7c4d9..2342e250 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -221,8 +221,8 @@ const-info.lo const-info.o: $(srcdir)/const-info.c \ getdns/getdns_extra.h \ $(srcdir)/const-info.h context.lo context.o: $(srcdir)/context.c \ - config.h $(srcdir)/debug.h \ - $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/wire2str.h $(srcdir)/context.h \ + config.h \ + $(srcdir)/debug.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/wire2str.h $(srcdir)/context.h \ getdns/getdns.h \ getdns/getdns_extra.h \ $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h \ @@ -257,7 +257,8 @@ dict.lo dict.o: $(srcdir)/dict.c \ $(srcdir)/gldns/pkthdr.h $(srcdir)/dict.h $(srcdir)/list.h $(srcdir)/const-info.h $(srcdir)/gldns/wire2str.h \ $(srcdir)/gldns/parseutil.h dnssec.lo dnssec.o: $(srcdir)/dnssec.c \ - config.h $(srcdir)/debug.h \ + config.h \ + $(srcdir)/debug.h \ getdns/getdns.h \ $(srcdir)/context.h \ getdns/getdns_extra.h \ @@ -271,7 +272,8 @@ dnssec.lo dnssec.o: $(srcdir)/dnssec.c \ $(srcdir)/general.h $(srcdir)/dict.h $(srcdir)/list.h $(srcdir)/util/val_secalgo.h \ $(srcdir)/util/orig-headers/val_secalgo.h general.lo general.o: $(srcdir)/general.c \ - config.h $(srcdir)/general.h \ + config.h \ + $(srcdir)/general.h \ getdns/getdns.h \ $(srcdir)/types-internal.h \ getdns/getdns_extra.h \ @@ -286,15 +288,15 @@ list.lo list.o: $(srcdir)/list.c $(srcdir)/types-internal.h \ getdns/getdns.h \ getdns/getdns_extra.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h $(srcdir)/util-internal.h \ - config.h $(srcdir)/context.h \ - $(srcdir)/extension/default_eventloop.h $(srcdir)/extension/poll_eventloop.h \ + config.h \ + $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h $(srcdir)/extension/poll_eventloop.h \ $(srcdir)/types-internal.h $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/server.h $(srcdir)/util/lruhash.h \ $(srcdir)/util/orig-headers/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/orig-headers/locks.h \ $(srcdir)/util/auxiliary/util/log.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h \ $(srcdir)/gldns/pkthdr.h $(srcdir)/list.h $(srcdir)/dict.h mdns.lo mdns.o: $(srcdir)/mdns.c \ - config.h $(srcdir)/debug.h \ - $(srcdir)/context.h \ + config.h \ + $(srcdir)/debug.h $(srcdir)/context.h \ getdns/getdns.h \ getdns/getdns_extra.h \ $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h \ @@ -306,7 +308,8 @@ mdns.lo mdns.o: $(srcdir)/mdns.c \ $(srcdir)/util/auxiliary/util/fptr_wlist.h $(srcdir)/util/lookup3.h \ $(srcdir)/util/orig-headers/lookup3.h pubkey-pinning.lo pubkey-pinning.o: $(srcdir)/pubkey-pinning.c \ - config.h $(srcdir)/debug.h \ + config.h \ + $(srcdir)/debug.h \ getdns/getdns.h \ $(srcdir)/context.h \ getdns/getdns_extra.h \ @@ -352,8 +355,8 @@ server.lo server.o: $(srcdir)/server.c \ $(srcdir)/util/orig-headers/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/orig-headers/locks.h \ $(srcdir)/util/auxiliary/util/log.h $(srcdir)/debug.h stub.lo stub.o: $(srcdir)/stub.c \ - config.h $(srcdir)/debug.h \ - $(srcdir)/stub.h \ + config.h \ + $(srcdir)/debug.h $(srcdir)/stub.h \ getdns/getdns.h \ $(srcdir)/types-internal.h \ getdns/getdns_extra.h \ @@ -366,7 +369,8 @@ stub.lo stub.o: $(srcdir)/stub.c \ $(srcdir)/util-internal.h $(srcdir)/general.h $(srcdir)/pubkey-pinning.h sync.lo sync.o: $(srcdir)/sync.c \ getdns/getdns.h \ - config.h $(srcdir)/context.h \ + config.h \ + $(srcdir)/context.h \ getdns/getdns_extra.h \ $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h \ $(srcdir)/extension/default_eventloop.h $(srcdir)/extension/poll_eventloop.h \ @@ -479,8 +483,8 @@ libevent.lo libevent.o: $(srcdir)/extension/libevent.c \ getdns/getdns_extra.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h $(srcdir)/getdns/getdns_ext_libevent.h libuv.lo libuv.o: $(srcdir)/extension/libuv.c \ - config.h $(srcdir)/debug.h \ - $(srcdir)/types-internal.h \ + config.h \ + $(srcdir)/debug.h $(srcdir)/types-internal.h \ getdns/getdns.h \ getdns/getdns_extra.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/orig-headers/rbtree.h $(srcdir)/getdns/getdns_ext_libuv.h From d319e0a88bacb93c95fe7c2b02a6c0b37c369a4c Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 1 Jun 2017 15:16:25 +0200 Subject: [PATCH 13/35] Copy stubby config file too --- Makefile.in | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.in b/Makefile.in index fadb2f9b..8282d4a4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -242,6 +242,7 @@ $(distdir): cp $(srcdir)/spec/example/*.[ch] $(distdir)/spec/example cp $(srcdir)/src/tools/Makefile.in $(distdir)/src/tools cp $(srcdir)/src/tools/*.[ch] $(distdir)/src/tools + cp $(srcdir)/src/tools/stubby.conf $(distdir)/src/tools cp $(srcdir)/src/jsmn/*.[ch] $(distdir)/src/jsmn cp $(srcdir)/src/jsmn/LICENSE $(distdir)/src/jsmn cp $(srcdir)/src/jsmn/README.md $(distdir)/src/jsmn From bc0052d4bb53ddb25549470051443d430fdfe5a0 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 1 Jun 2017 15:26:18 +0200 Subject: [PATCH 14/35] Bumb version --- configure.ac | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index 24fdb29e..dd190c55 100644 --- a/configure.ac +++ b/configure.ac @@ -36,8 +36,8 @@ sinclude(./m4/acx_getaddrinfo.m4) sinclude(./m4/ax_check_compile_flag.m4) sinclude(./m4/pkg.m4) -AC_INIT([getdns], [1.1.0], [users@getdnsapi.net], [], [https://getdnsapi.net]) -AC_SUBST(RELEASE_CANDIDATE, []) +AC_INIT([getdns], [1.1.1], [users@getdnsapi.net], [], [https://getdnsapi.net]) +AC_SUBST(RELEASE_CANDIDATE, [rc1]) # Set current date from system if not set AC_ARG_WITH([current-date], @@ -47,7 +47,7 @@ AC_ARG_WITH([current-date], [CURRENT_DATE="`date -u +%Y-%m-%dT%H:%M:%SZ`"]) AC_SUBST(GETDNS_VERSION, ["AC_PACKAGE_VERSION$RELEASE_CANDIDATE"]) -AC_SUBST(GETDNS_NUMERIC_VERSION, [0x01010000]) +AC_SUBST(GETDNS_NUMERIC_VERSION, [0x010100c1]) AC_SUBST(API_VERSION, ["December 2015"]) AC_SUBST(API_NUMERIC_VERSION, [0x07df0c00]) GETDNS_COMPILATION_COMMENT="AC_PACKAGE_NAME $GETDNS_VERSION configured on $CURRENT_DATE for the $API_VERSION version of the API" @@ -77,10 +77,11 @@ GETDNS_COMPILATION_COMMENT="AC_PACKAGE_NAME $GETDNS_VERSION configured on $CURRE # getdns-0.5.0 had libversion 4:0:3 # getdns-0.5.1 had libversion 4:1:3 (but should have been getdns-0.6.0) # getdns-0.9.0 had libversion 5:0:4 -# getdns-1.0.0 had libversion 5:1:4 -# getdns-1.1.0 will have libversion 6:0:0 +# getdns-1.0.0 had libversion 5:1:4 +# getdns-1.1.0 had libversion 6:0:0 +# getdns-1.1.1 will have libversion 6:1:0 # -GETDNS_LIBVERSION=6:0:0 +GETDNS_LIBVERSION=6:1:0 AC_SUBST(GETDNS_COMPILATION_COMMENT) AC_SUBST(GETDNS_LIBVERSION) From 8cef8b1f95d9db83e857d31111a10db22057675d Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 1 Jun 2017 15:32:50 +0200 Subject: [PATCH 15/35] Use libtool from correct location --- .../275-server-capabilities.tpkg/275-server-capabilities.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.test b/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.test index 8860899c..428591fd 100644 --- a/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.test +++ b/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.test @@ -5,7 +5,7 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test -make && "${BUILDDIR}/build/libtool" exec valgrind -v --log-file=valgrind.log --leak-check=full --error-exitcode=1 --track-origins=yes "./${TPKG_NAME}" | ( +make && "${BUILDDIR}/build-stub-only/libtool" exec valgrind -v --log-file=valgrind.log --leak-check=full --error-exitcode=1 --track-origins=yes "./${TPKG_NAME}" | ( read PORT read PORT2 From a9464993dd5be40ee3e37cb4701c687c300e576c Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 1 Jun 2017 16:24:24 +0200 Subject: [PATCH 16/35] bugfix #286 reschedule reused listening addresses --- src/server.c | 5 +++-- .../275-server-capabilities.c | 2 +- .../275-server-capabilities.test | 8 ++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/server.c b/src/server.c index ef167179..05267b60 100644 --- a/src/server.c +++ b/src/server.c @@ -995,15 +995,16 @@ getdns_return_t getdns_context_set_listen_addresses( connection *conn; loop->vmt->clear(loop, &l->to_replace->event); - (void) memset(&l->to_replace->event, 0, - sizeof(getdns_eventloop_event)); l->fd = l->to_replace->fd; l->event = l->to_replace->event; + l->event.userarg = l; l->connections = l->to_replace->connections; for (conn = l->connections; conn; conn = conn->next) conn->l = l; + (void) memset(&l->to_replace->event, 0, + sizeof(getdns_eventloop_event)); l->to_replace->connections = NULL; l->to_replace->fd = -1; diff --git a/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.c b/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.c index bffd95a6..91756bf6 100644 --- a/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.c +++ b/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.c @@ -119,8 +119,8 @@ int main() context, listeners, NULL, handler))) ; /* pass */ - fprintf(stdout, "%d\n", (int)port2); fprintf(stdout, "%d\n", (int)port1); + fprintf(stdout, "%d\n", (int)port2); fflush(stdout); getdns_context_run(context); } diff --git a/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.test b/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.test index 428591fd..9935de91 100644 --- a/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.test +++ b/src/test/tpkg/275-server-capabilities.tpkg/275-server-capabilities.test @@ -13,6 +13,8 @@ make && "${BUILDDIR}/build-stub-only/libtool" exec valgrind -v --log-file=valgri ${GETDNS_STUB_QUERY} -s @127.0.0.1:$PORT TXT test +return_call_reporting 2>&1 > tcp_out + ${GETDNS_STUB_QUERY} -s -U @127.0.0.1:$PORT2 TXT test +return_call_reporting 2>&1 > udp_out + ${GETDNS_STUB_QUERY} -s -q @127.0.0.1:$PORT TXT quit. ) if grep -q 'definitely lost: [^0]' valgrind.log @@ -33,6 +35,12 @@ then echo 'error: Query was not over TCP!' exit 1 +elif ! grep -q '"transport": GETDNS_TRANSPORT_UDP' udp_out +then + cat udp_out + echo 'error: Query was not over UDP!' + exit 1 + elif ! grep -q '"Some answer"' tcp_out then cat tcp_out From 305a6f6b6a94670519521aead9f00cdc70bdcada Mon Sep 17 00:00:00 2001 From: Sara Dickinson Date: Thu, 1 Jun 2017 15:43:09 +0100 Subject: [PATCH 17/35] 1) Add a stubby-setdns script (for MAC OS X only at the moment) to support Homebrew formula 2) Remove the OARC server from the default config. So now only include the servers that commit to not logging user data. Can make this clearer once we have a yaml config file. 3) Update makefile to include stubby.conf and stubby-setdns in dist tarball --- Makefile.in | 1 + src/tools/stubby-setdns.sh | 67 ++++++++++++++++++++++++++++++++++++++ src/tools/stubby.conf | 12 ------- 3 files changed, 68 insertions(+), 12 deletions(-) create mode 100755 src/tools/stubby-setdns.sh diff --git a/Makefile.in b/Makefile.in index 8282d4a4..fc741fce 100644 --- a/Makefile.in +++ b/Makefile.in @@ -243,6 +243,7 @@ $(distdir): cp $(srcdir)/src/tools/Makefile.in $(distdir)/src/tools cp $(srcdir)/src/tools/*.[ch] $(distdir)/src/tools cp $(srcdir)/src/tools/stubby.conf $(distdir)/src/tools + cp $(srcdir)/src/tools/stubby-setdns.sh $(distdir)/src/tools cp $(srcdir)/src/jsmn/*.[ch] $(distdir)/src/jsmn cp $(srcdir)/src/jsmn/LICENSE $(distdir)/src/jsmn cp $(srcdir)/src/jsmn/README.md $(distdir)/src/jsmn diff --git a/src/tools/stubby-setdns.sh b/src/tools/stubby-setdns.sh new file mode 100755 index 00000000..6a0c9903 --- /dev/null +++ b/src/tools/stubby-setdns.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# Stubby helper file to set DNS servers on OSX. +# Must run as root. + +usage () { + echo + echo "Update the system DNS resolvers so that Stubby is used for all DNS" + echo "queries. (Stubby must already be running)" + echo "This must be run as root, and is currently only supported on MAC OS X." + echo + echo "Usage: $0 options" + echo + echo "Supported options:" + echo " -r Reset DNS resolvers to the default ones (e.g. from DHCP)" + echo " -l List the current DNS settings for all interfaces" + echo " -h Show this help." +} + +RESET=0 +LIST=0 +SERVERS="127.0.0.1 ::1" +OS_X=`uname -a | grep -c 'Darwin'` + +while getopts ":rlh" opt; do + case $opt in + r ) RESET=1 ;; + l ) LIST=1 ;; + h ) usage + exit 1 ;; + \? ) usage + exit 1 ;; + esac +done + + +if [[ $OS_X -eq 0 ]]; then + echo "Sorry - This script is currenlty only supported on MAC OS X." + exit 1 +fi + +if [[ $LIST -eq 1 ]]; then + echo "** Current DNS settings **" + networksetup -listallnetworkservices 2>/dev/null | grep -v '*' | while read x ; do + RESULT=`networksetup -getdnsservers "$x"` + RESULT=`echo $RESULT` + printf '%-30s %s\n' "$x:" "$RESULT" + done + exit 1 +fi + +if [ "$USER" != "root" ]; then + echo "Must be root to update system resolvers. Retry using 'sudo stubby-setdns'" + exit 1 +fi + +if [[ $RESET -eq 1 ]]; then + SERVERS="empty" + echo "Setting DNS servers to '"$SERVERS"' - the system will use default DNS service." +else + echo "Setting DNS servers to '"$SERVERS"' - the system will use Stubby if it is running." +fi + +### Set the DNS settings via networksetup ### +networksetup -listallnetworkservices 2>/dev/null | grep -v '*' | while read x ; do + networksetup -setdnsservers "$x" $SERVERS +done + diff --git a/src/tools/stubby.conf b/src/tools/stubby.conf index 67a5233c..56fffaff 100644 --- a/src/tools/stubby.conf +++ b/src/tools/stubby.conf @@ -49,18 +49,6 @@ , value: foxZRnIh9gZpWnl+zEiKa0EJ2rdCGroMWm02gaxSc9Q= } ] }, - { address_data: 184.105.193.78 - , tls_pubkey_pinset: - [ { digest: "sha256" - , value: pOXrpUt9kgPgbWxBFFcBTbRH2heo2wHwXp1fd4AEVXI= - } ] - }, - { address_data: 2620:ff:c000:0:1::64:25 - , tls_pubkey_pinset: - [ { digest: "sha256" - , value: pOXrpUt9kgPgbWxBFFcBTbRH2heo2wHwXp1fd4AEVXI= - } ] - }, { address_data: 89.233.43.71 , tls_auth_name: "unicast.censurfridns.dk" }, From d2e8ac9e6117d90c45cc51c38c9630f1a1d47e81 Mon Sep 17 00:00:00 2001 From: Sara Dickinson Date: Wed, 7 Jun 2017 17:00:21 +0100 Subject: [PATCH 18/35] =?UTF-8?q?Change=20script=20name=20so=20it=20is=20s?= =?UTF-8?q?pecific=20for=20macOS=20(which=20is=20the=20new=20=E2=80=98offi?= =?UTF-8?q?cial=E2=80=99=20name=20for=20Mac=20OS=20X!)=20Add=20the=20copyr?= =?UTF-8?q?ight=20statement=20to=20the=20stubby-setdns-macos.sh=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tools/stubby-setdns-macos.sh | 96 ++++++++++++++++++++++++++++++++ src/tools/stubby-setdns.sh | 67 ---------------------- 2 files changed, 96 insertions(+), 67 deletions(-) create mode 100755 src/tools/stubby-setdns-macos.sh delete mode 100755 src/tools/stubby-setdns.sh diff --git a/src/tools/stubby-setdns-macos.sh b/src/tools/stubby-setdns-macos.sh new file mode 100755 index 00000000..90f1e45f --- /dev/null +++ b/src/tools/stubby-setdns-macos.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# +# Copyright (c) 2017, Verisign, Inc., NLnet Labs +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the names of the copyright holders nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL Verisign, Inc. BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +# Stubby helper file to set DNS servers on macOS. +# Note - this script doesn't detect or handle network events, simply changes the +# current resolvers +# Must run as root. + +usage () { + echo + echo "Update the system DNS resolvers so that Stubby is used for all DNS" + echo "queries on macOS. (Stubby must already be running)" + echo "This must be run as root." + echo + echo "Usage: $0 options" + echo + echo "Supported options:" + echo " -r Reset DNS resolvers to the default ones (e.g. from DHCP)" + echo " -l List the current DNS settings for all interfaces" + echo " -h Show this help." +} + +RESET=0 +LIST=0 +SERVERS="127.0.0.1 ::1" +OS_X=`uname -a | grep -c 'Darwin'` + +while getopts ":rlh" opt; do + case $opt in + r ) RESET=1 ;; + l ) LIST=1 ;; + h ) usage + exit 1 ;; + \? ) usage + exit 1 ;; + esac +done + + +if [[ $OS_X -eq 0 ]]; then + echo "Sorry - This script only works on macOS and you are on a different OS." + exit 1 +fi + +if [[ $LIST -eq 1 ]]; then + echo "** Current DNS settings **" + networksetup -listallnetworkservices 2>/dev/null | grep -v '*' | while read x ; do + RESULT=`networksetup -getdnsservers "$x"` + RESULT=`echo $RESULT` + printf '%-30s %s\n' "$x:" "$RESULT" + done + exit 1 +fi + +if [ "$USER" != "root" ]; then + echo "Must be root to update system resolvers. Retry using 'sudo stubby-setdns'" + exit 1 +fi + +if [[ $RESET -eq 1 ]]; then + SERVERS="empty" + echo "Setting DNS servers to '"$SERVERS"' - the system will use default DNS service." +else + echo "Setting DNS servers to '"$SERVERS"' - the system will use Stubby if it is running." +fi + +### Set the DNS settings via networksetup ### +networksetup -listallnetworkservices 2>/dev/null | grep -v '*' | while read x ; do + networksetup -setdnsservers "$x" $SERVERS +done + diff --git a/src/tools/stubby-setdns.sh b/src/tools/stubby-setdns.sh deleted file mode 100755 index 6a0c9903..00000000 --- a/src/tools/stubby-setdns.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# Stubby helper file to set DNS servers on OSX. -# Must run as root. - -usage () { - echo - echo "Update the system DNS resolvers so that Stubby is used for all DNS" - echo "queries. (Stubby must already be running)" - echo "This must be run as root, and is currently only supported on MAC OS X." - echo - echo "Usage: $0 options" - echo - echo "Supported options:" - echo " -r Reset DNS resolvers to the default ones (e.g. from DHCP)" - echo " -l List the current DNS settings for all interfaces" - echo " -h Show this help." -} - -RESET=0 -LIST=0 -SERVERS="127.0.0.1 ::1" -OS_X=`uname -a | grep -c 'Darwin'` - -while getopts ":rlh" opt; do - case $opt in - r ) RESET=1 ;; - l ) LIST=1 ;; - h ) usage - exit 1 ;; - \? ) usage - exit 1 ;; - esac -done - - -if [[ $OS_X -eq 0 ]]; then - echo "Sorry - This script is currenlty only supported on MAC OS X." - exit 1 -fi - -if [[ $LIST -eq 1 ]]; then - echo "** Current DNS settings **" - networksetup -listallnetworkservices 2>/dev/null | grep -v '*' | while read x ; do - RESULT=`networksetup -getdnsservers "$x"` - RESULT=`echo $RESULT` - printf '%-30s %s\n' "$x:" "$RESULT" - done - exit 1 -fi - -if [ "$USER" != "root" ]; then - echo "Must be root to update system resolvers. Retry using 'sudo stubby-setdns'" - exit 1 -fi - -if [[ $RESET -eq 1 ]]; then - SERVERS="empty" - echo "Setting DNS servers to '"$SERVERS"' - the system will use default DNS service." -else - echo "Setting DNS servers to '"$SERVERS"' - the system will use Stubby if it is running." -fi - -### Set the DNS settings via networksetup ### -networksetup -listallnetworkservices 2>/dev/null | grep -v '*' | while read x ; do - networksetup -setdnsservers "$x" $SERVERS -done - From 874af14cea62f2609a0e975b3e37d8a3f40b3760 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 8 Jun 2017 11:45:49 +0200 Subject: [PATCH 19/35] Rename setup script in Makefile too --- Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index fc741fce..64492c4c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -243,7 +243,7 @@ $(distdir): cp $(srcdir)/src/tools/Makefile.in $(distdir)/src/tools cp $(srcdir)/src/tools/*.[ch] $(distdir)/src/tools cp $(srcdir)/src/tools/stubby.conf $(distdir)/src/tools - cp $(srcdir)/src/tools/stubby-setdns.sh $(distdir)/src/tools + cp $(srcdir)/src/tools/stubby-setdns-macos.sh $(distdir)/src/tools cp $(srcdir)/src/jsmn/*.[ch] $(distdir)/src/jsmn cp $(srcdir)/src/jsmn/LICENSE $(distdir)/src/jsmn cp $(srcdir)/src/jsmn/README.md $(distdir)/src/jsmn From 6f01d466dcb5c332389abaabb735fc8a1081834b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 8 Jun 2017 12:08:44 +0200 Subject: [PATCH 20/35] Update ChangeLog --- ChangeLog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7b7cdf82..938b850c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +* 2017-06-09: Version 1.1.1 + * Added stubby-setdns-macos.sh script to support Homebrew formula + * Include stubby.conf in the districution tarball + * Bugfix #286 reschedule reused listening addresses + * Bugfix #166 Allow parallel builds and unit-tests + * NSAP-PTR, EID and NIMLOC, TALINK, AVC support + * bugfix of TA RR type + * OPENPGPKEY and SMIMEA support + * Bugfix TAG rdata type presentation format for CAA RR type + * Bugfix Zero sized gateways with IPSECKEY gateway_type 0 + * Guidance for integration with systemd + * Also check for memory leaks with advances server capabilities. + * Bugfix convert IP string to IP dict with getdns_str2dict() directly. + * 2017-04-13: Version 1.1.0 * bugfix: Check size of tls_auth_name. * Improvements that came from Visual Studio static analysis From 4e5231670421bd900edc244f3f59056cb99d7704 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 8 Jun 2017 12:11:43 +0200 Subject: [PATCH 21/35] Include systemd directives too --- Makefile.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile.in b/Makefile.in index 64492c4c..66f2729b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -198,6 +198,7 @@ $(distdir): mkdir -p $(distdir)/src/tools mkdir -p $(distdir)/src/jsmn mkdir -p $(distdir)/doc + mkdir -p $(distdir)/systemd mkdir -p $(distdir)/spec mkdir -p $(distdir)/spec/example cp $(srcdir)/configure.ac $(distdir) @@ -240,6 +241,8 @@ $(distdir): cp $(srcdir)/spec/*.html $(distdir)/spec cp $(srcdir)/spec/example/Makefile.in $(distdir)/spec/example cp $(srcdir)/spec/example/*.[ch] $(distdir)/spec/example + cp $(srcdir)/systemd/README.md $(distdir)/systemd + cp $(srcdir)/systemd/stubby.* $(distdir)/systemd cp $(srcdir)/src/tools/Makefile.in $(distdir)/src/tools cp $(srcdir)/src/tools/*.[ch] $(distdir)/src/tools cp $(srcdir)/src/tools/stubby.conf $(distdir)/src/tools From 878a229bead4fb7e00bbb9fba51ffb4ef980a786 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 8 Jun 2017 14:06:58 +0200 Subject: [PATCH 22/35] Don't test OARC servers --- src/test/tpkg/290-transports.tpkg/290-transports.test | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/tpkg/290-transports.tpkg/290-transports.test b/src/test/tpkg/290-transports.tpkg/290-transports.test index 9d66cfee..13a83c15 100644 --- a/src/test/tpkg/290-transports.tpkg/290-transports.test +++ b/src/test/tpkg/290-transports.tpkg/290-transports.test @@ -126,7 +126,7 @@ for (( ii = 0; ii < 1; ii++)); do SERVER_IP_TSIG_WRONG_NAME=`echo ${SERVER_IP_TSIG}${TSIG_ALG}":"${TSIG_NAME::${#TSIG_NAME}-1}":"${TSIG_SECRET}` SERVER_IP_TSIG_WRONG_SECRET=`echo ${SERVER_IP_TSIG}${TSIG_ALG}":"${TSIG_NAME}":"${TSIG_SECRET::${#TSIG_SECRET}-1}` - NUM_GOOD_QUERIES=10 + NUM_GOOD_QUERIES=9 GOOD_QUERIES=( "-s -A getdnsapi.net -l U @${SERVER_IP} +edns_cookies" "U" "-" "-s -A getdnsapi.net -l T @${SERVER_IP}" "T" "-" @@ -136,8 +136,8 @@ for (( ii = 0; ii < 1; ii++)); do "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP}" "L" "S" "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_KEY}\"" "L" "S" "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP} -K pin-sha256=\"${TLS_SERVER_KEY}\"" "L" "S" - "-s -A getdnsapi.net -l L -m @${TLS_SERVER_SS_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_SS_KEY}\"" "L" "S" "-s -G DNSKEY getdnsapi.net -l U @${SERVER_IP} -b 512 -D" "U" "-") +#"-s -A getdnsapi.net -l L -m @${TLS_SERVER_SS_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_SS_KEY}\"" "L" "S" NUM_GOOD_FB_QUERIES=6 GOOD_FALLBACK_QUERIES=( @@ -157,8 +157,8 @@ for (( ii = 0; ii < 1; ii++)); do "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_NO_NAME} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\"" "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\"" "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME} -K pin-sha256=\"${TLS_SERVER_KEY}\"" - "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\"" - "-s -A getdnsapi.net -l L -m @${TLS_SERVER_SS_IP} -K pin-sha256=\"${TLS_SERVER_SS_KEY}\"") + "-s -A getdnsapi.net -l L -m @${TLS_SERVER_IP_WRONG_NAME} -K pin-sha256=\"${TLS_SERVER_WRONG_KEY}\"") +#"-s -A getdnsapi.net -l L -m @${TLS_SERVER_SS_IP} -K pin-sha256=\"${TLS_SERVER_SS_KEY}\"" echo "Starting transport test" From 360f3bdc3cd08e779421863add955331f21dadcb Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 8 Jun 2017 14:10:10 +0200 Subject: [PATCH 23/35] Not certain when actual release is --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 938b850c..eb46064c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -* 2017-06-09: Version 1.1.1 +* 2017-06-??: Version 1.1.1 * Added stubby-setdns-macos.sh script to support Homebrew formula * Include stubby.conf in the districution tarball * Bugfix #286 reschedule reused listening addresses From 9b548a76c9e15fd218787c474ea7b6075229b1f0 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 8 Jun 2017 14:48:22 +0200 Subject: [PATCH 24/35] Resync with Unbound --- ChangeLog | 2 +- configure.ac | 20 ++++++++++++- src/gldns/keyraw.c | 21 ++++++++++++++ src/gldns/keyraw.h | 9 ++++++ src/gldns/rrdef.c | 2 +- src/gldns/str2wire.c | 10 +++++++ src/gldns/str2wire.h | 2 ++ src/util/orig-headers/lruhash.h | 2 +- src/util/val_secalgo.c | 51 ++++++++++++++++++++++++++++++--- 9 files changed, 111 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index eb46064c..1ebc847d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,7 @@ * Bugfix #286 reschedule reused listening addresses * Bugfix #166 Allow parallel builds and unit-tests * NSAP-PTR, EID and NIMLOC, TALINK, AVC support - * bugfix of TA RR type + * Bugfix of TA RR type * OPENPGPKEY and SMIMEA support * Bugfix TAG rdata type presentation format for CAA RR type * Bugfix Zero sized gateways with IPSECKEY gateway_type 0 diff --git a/configure.ac b/configure.ac index dd190c55..6281e573 100644 --- a/configure.ac +++ b/configure.ac @@ -297,7 +297,7 @@ fi AC_CHECK_HEADERS([openssl/conf.h],,, [AC_INCLUDES_DEFAULT]) AC_CHECK_HEADERS([openssl/engine.h],,, [AC_INCLUDES_DEFAULT]) AC_CHECK_HEADERS([openssl/bn.h openssl/rsa.h openssl/dsa.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_md5 EVP_sha1 EVP_sha224 EVP_sha256 EVP_sha384 EVP_sha512 FIPS_mode ENGINE_load_cryptodev EVP_PKEY_keygen ECDSA_SIG_get0 EVP_MD_CTX_new EVP_PKEY_base_id HMAC_CTX_new HMAC_CTX_free TLS_client_method DSA_SIG_set0 EVP_dss1 SSL_CTX_set_min_proto_version]) +AC_CHECK_FUNCS([OPENSSL_config EVP_md5 EVP_sha1 EVP_sha224 EVP_sha256 EVP_sha384 EVP_sha512 FIPS_mode ENGINE_load_cryptodev EVP_PKEY_keygen ECDSA_SIG_get0 EVP_MD_CTX_new EVP_PKEY_base_id HMAC_CTX_new HMAC_CTX_free TLS_client_method DSA_SIG_set0 EVP_dss1 EVP_DigestVerify SSL_CTX_set_min_proto_version]) AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ AC_INCLUDES_DEFAULT #ifdef HAVE_OPENSSL_ERR_H @@ -500,6 +500,24 @@ case "$enable_dsa" in ;; esac +AC_ARG_ENABLE(ed25519, AC_HELP_STRING([--disable-ed25519], [Disable ED25519 support])) +use_ed25519="no" +case "$enable_ed25519" in + no) + ;; + *) + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then + AC_CHECK_DECLS([NID_ED25519], [ + AC_DEFINE_UNQUOTED([USE_ED25519], [1], [Define this to enable ED25519 support.]) + use_ed25519="yes" + ], [ if test "x$enable_ed25519" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED25519 and you used --enable-ed25519.]) + fi ], [AC_INCLUDES_DEFAULT +#include + ]) + fi + ;; +esac + AC_ARG_ENABLE(all-drafts, AC_HELP_STRING([--enable-all-drafts], [Enables the draft mdns client support])) case "$enable_all_drafts" in yes) diff --git a/src/gldns/keyraw.c b/src/gldns/keyraw.c index 9e6adcb2..3f6f1a20 100644 --- a/src/gldns/keyraw.c +++ b/src/gldns/keyraw.c @@ -388,6 +388,27 @@ gldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo) } #endif /* USE_ECDSA */ +#ifdef USE_ED25519 +EVP_PKEY* +gldns_ed255192pkey_raw(const unsigned char* key, size_t keylen) +{ + /* ASN1 for ED25519 is 302a300506032b6570032100 <32byteskey> */ + uint8_t pre[] = {0x30, 0x2a, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, + 0x70, 0x03, 0x21, 0x00}; + int pre_len = 12; + uint8_t buf[256]; + EVP_PKEY *evp_key; + /* pp gets modified by d2i() */ + const unsigned char* pp = (unsigned char*)buf; + if(keylen != 32 || keylen + pre_len > sizeof(buf)) + return NULL; /* wrong length */ + memmove(buf, pre, pre_len); + memmove(buf+pre_len, key, keylen); + evp_key = d2i_PUBKEY(NULL, &pp, (int)(pre_len+keylen)); + return evp_key; +} +#endif /* USE_ED25519 */ + int gldns_digest_evp(unsigned char* data, unsigned int len, unsigned char* dest, const EVP_MD* md) diff --git a/src/gldns/keyraw.h b/src/gldns/keyraw.h index c0d33e60..60e2bfde 100644 --- a/src/gldns/keyraw.h +++ b/src/gldns/keyraw.h @@ -92,6 +92,15 @@ EVP_PKEY* gldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo); */ RSA *gldns_key_buf2rsa_raw(unsigned char* key, size_t len); +/** + * Converts a holding buffer with key material to EVP PKEY in openssl. + * Only available if ldns was compiled with ED25519. + * \param[in] key the uncompressed wireformat of the key. + * \param[in] len length of key data + * \return the key or NULL on error. + */ +EVP_PKEY* gldns_ed255192pkey_raw(const unsigned char* key, size_t len); + /** * Utility function to calculate hash using generic EVP_MD pointer. * \param[in] data the data to hash. diff --git a/src/gldns/rrdef.c b/src/gldns/rrdef.c index 60b57c31..91739232 100644 --- a/src/gldns/rrdef.c +++ b/src/gldns/rrdef.c @@ -606,7 +606,7 @@ static gldns_rr_descriptor rdata_field_descriptors[] = { {GLDNS_RR_TYPE_CAA, "CAA", 3, 3, type_caa_wireformat, GLDNS_RDF_TYPE_NONE, GLDNS_RR_NO_COMPRESS, 0 }, #ifdef DRAFT_RRTYPES /* 258 */ - {GLDNS_RR_TYPE_TXT, "AVC", 1, 0, NULL, GLDNS_RDF_TYPE_STR, GLDNS_RR_NO_COMPRESS, 0 }, + {GLDNS_RR_TYPE_AVC, "AVC", 1, 0, NULL, GLDNS_RDF_TYPE_STR, GLDNS_RR_NO_COMPRESS, 0 }, #else {GLDNS_RR_TYPE_NULL, "TYPE258", 1, 1, type_0_wireformat, GLDNS_RDF_TYPE_NONE, GLDNS_RR_NO_COMPRESS, 0 }, #endif diff --git a/src/gldns/str2wire.c b/src/gldns/str2wire.c index 57cbd4d1..2762aa38 100644 --- a/src/gldns/str2wire.c +++ b/src/gldns/str2wire.c @@ -869,6 +869,8 @@ int gldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, /* we can have the situation, where we've read ok, but still got * no bytes to play with, in this case size is 0 */ if(size == 0) { + if(*len > 0) + rr[0] = 0; *len = 0; *dname_len = 0; return GLDNS_WIREPARSE_ERR_OK; @@ -876,6 +878,7 @@ int gldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, if(strncmp(line, "$ORIGIN", 7) == 0 && isspace((unsigned char)line[7])) { int s; + strlcpy((char*)rr, line, *len); *len = 0; *dname_len = 0; if(!parse_state) return GLDNS_WIREPARSE_ERR_OK; @@ -886,12 +889,19 @@ int gldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, return s; } else if(strncmp(line, "$TTL", 4) == 0 && isspace((unsigned char)line[4])) { const char* end = NULL; + strlcpy((char*)rr, line, *len); *len = 0; *dname_len = 0; if(!parse_state) return GLDNS_WIREPARSE_ERR_OK; parse_state->default_ttl = gldns_str2period( gldns_strip_ws(line+5), &end); } else if (strncmp(line, "$INCLUDE", 8) == 0) { + strlcpy((char*)rr, line, *len); + *len = 0; + *dname_len = 0; + return GLDNS_WIREPARSE_ERR_INCLUDE; + } else if (strncmp(line, "$", 1) == 0) { + strlcpy((char*)rr, line, *len); *len = 0; *dname_len = 0; return GLDNS_WIREPARSE_ERR_INCLUDE; diff --git a/src/gldns/str2wire.h b/src/gldns/str2wire.h index 23094b6c..1b7777bd 100644 --- a/src/gldns/str2wire.h +++ b/src/gldns/str2wire.h @@ -237,6 +237,8 @@ struct gldns_file_parse_state { * @param rr: this is malloced by the user and the result is stored here, * if an RR is read. If no RR is read this is signalled with the * return len set to 0 (for ORIGIN, TTL directives). + * The read line is available in the rr_buf (zero terminated), for + * $DIRECTIVE style elements. * @param len: on input, the length of the rr buffer. on output the rr len. * Buffer size of 64k should be enough. * @param dname_len: returns the length of the dname initial part of the rr. diff --git a/src/util/orig-headers/lruhash.h b/src/util/orig-headers/lruhash.h index af06b622..4759b500 100644 --- a/src/util/orig-headers/lruhash.h +++ b/src/util/orig-headers/lruhash.h @@ -326,7 +326,7 @@ void lru_demote(struct lruhash* table, struct lruhash_entry* entry); * @param hash: hash value. User calculates the hash. * @param entry: identifies the entry. * @param data: the data. - * @param cb_override: if not null overrides the cb_arg for the deletefunc. + * @param cb_arg: if not null overrides the cb_arg for the deletefunc. * @return: pointer to the existing entry if the key was already present, * or to the entry argument if it was not. */ diff --git a/src/util/val_secalgo.c b/src/util/val_secalgo.c index be88ff43..88d23472 100644 --- a/src/util/val_secalgo.c +++ b/src/util/val_secalgo.c @@ -228,6 +228,9 @@ dnskey_algo_id_is_supported(int id) case LDNS_ECDSAP256SHA256: case LDNS_ECDSAP384SHA384: #endif +#ifdef USE_ED25519 + case LDNS_ED25519: +#endif #if (defined(HAVE_EVP_SHA256) && defined(USE_SHA2)) || (defined(HAVE_EVP_SHA512) && defined(USE_SHA2)) || defined(USE_ECDSA) return 1; #endif @@ -555,6 +558,17 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, #endif break; #endif /* USE_ECDSA */ +#ifdef USE_ED25519 + case LDNS_ED25519: + *evp_key = sldns_ed255192pkey_raw(key, keylen); + if(!*evp_key) { + verbose(VERB_QUERY, "verify: " + "sldns_ed255192pkey_raw failed"); + return 0; + } + *digest_type = NULL; + break; +#endif /* USE_ED25519 */ default: verbose(VERB_QUERY, "verify: unknown algorithm %d", algo); @@ -644,18 +658,29 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, else if(docrypto_free) OPENSSL_free(sigblock); return sec_status_unchecked; } - if(EVP_VerifyInit(ctx, digest_type) == 0) { - verbose(VERB_QUERY, "verify: EVP_VerifyInit failed"); +#ifndef HAVE_EVP_DIGESTVERIFY + if(EVP_DigestInit(ctx, digest_type) == 0) { + verbose(VERB_QUERY, "verify: EVP_DigestInit failed"); +#ifdef HAVE_EVP_MD_CTX_NEW EVP_MD_CTX_destroy(ctx); +#else + EVP_MD_CTX_cleanup(ctx); + free(ctx); +#endif EVP_PKEY_free(evp_key); if(dofree) free(sigblock); else if(docrypto_free) OPENSSL_free(sigblock); return sec_status_unchecked; } - if(EVP_VerifyUpdate(ctx, (unsigned char*)sldns_buffer_begin(buf), + if(EVP_DigestUpdate(ctx, (unsigned char*)sldns_buffer_begin(buf), (unsigned int)sldns_buffer_limit(buf)) == 0) { - verbose(VERB_QUERY, "verify: EVP_VerifyUpdate failed"); + verbose(VERB_QUERY, "verify: EVP_DigestUpdate failed"); +#ifdef HAVE_EVP_MD_CTX_NEW EVP_MD_CTX_destroy(ctx); +#else + EVP_MD_CTX_cleanup(ctx); + free(ctx); +#endif EVP_PKEY_free(evp_key); if(dofree) free(sigblock); else if(docrypto_free) OPENSSL_free(sigblock); @@ -663,6 +688,24 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, } res = EVP_VerifyFinal(ctx, sigblock, sigblock_len, evp_key); +#else /* HAVE_EVP_DIGESTVERIFY */ + if(EVP_DigestVerifyInit(ctx, NULL, digest_type, NULL, evp_key) == 0) { + verbose(VERB_QUERY, "verify: EVP_DigestVerifyInit failed"); +#ifdef HAVE_EVP_MD_CTX_NEW + EVP_MD_CTX_destroy(ctx); +#else + EVP_MD_CTX_cleanup(ctx); + free(ctx); +#endif + EVP_PKEY_free(evp_key); + if(dofree) free(sigblock); + else if(docrypto_free) OPENSSL_free(sigblock); + return sec_status_unchecked; + } + res = EVP_DigestVerify(ctx, sigblock, sigblock_len, + (unsigned char*)sldns_buffer_begin(buf), + sldns_buffer_limit(buf)); +#endif #ifdef HAVE_EVP_MD_CTX_NEW EVP_MD_CTX_destroy(ctx); #else From a34e4338ce76aa0a06f6fcab8eb3424ab70cf16b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Fri, 9 Jun 2017 08:49:52 +0200 Subject: [PATCH 25/35] Find out what went wrong --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 33a6c780..98b98d95 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ addons: script: - mkdir tests - cd tests - - ../src/test/tpkg/run-parallel.sh + - ../src/test/tpkg/run-all.sh From e00100b388f009be14122c27877417d9057665bc Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Fri, 9 Jun 2017 11:24:51 +0200 Subject: [PATCH 26/35] s/recieve/receive/ --- src/stub.c | 2 +- src/test/check_getdns_transport.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stub.c b/src/stub.c index 2fa121f1..ee77c85c 100644 --- a/src/stub.c +++ b/src/stub.c @@ -362,7 +362,7 @@ process_keepalive( /* Use server sent value unless the client specified a shorter one. Convert to ms first (wire value has units of 100ms) */ uint64_t server_keepalive = ((uint64_t)gldns_read_uint16(position))*100; - DEBUG_STUB("%s %-35s: FD: %d Server Keepalive recieved: %d ms\n", + DEBUG_STUB("%s %-35s: FD: %d Server Keepalive received: %d ms\n", STUB_DEBUG_READ, __FUNC__, upstream->fd, (int)server_keepalive); if (netreq->owner->context->idle_timeout < server_keepalive) diff --git a/src/test/check_getdns_transport.c b/src/test/check_getdns_transport.c index bf457257..300abc4d 100644 --- a/src/test/check_getdns_transport.c +++ b/src/test/check_getdns_transport.c @@ -529,7 +529,7 @@ getdns_transport_suite(void) { /* Note that the exact number of messages received depends on if a trust * anchor is configured so these tests just check that no messages are - * received on the wrong transport and at least one is recieved on the + * received on the wrong transport and at least one is received on the * expected transport */ /* Positive test cases */ From e2be41d3528df8bc5de81195c8f8b2d379aeed8b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 14 Jun 2017 15:36:53 +0200 Subject: [PATCH 27/35] Don't segfault on IPv6 unavailability Resolved issue #306? Review needed! Shoud upstream_failed cancel all the netreqs? --- src/stub.c | 54 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/src/stub.c b/src/stub.c index ee77c85c..2514cf7f 100644 --- a/src/stub.c +++ b/src/stub.c @@ -565,14 +565,16 @@ upstream_failed(getdns_upstream *upstream, int during_setup) } else { upstream->conn_shutdowns++; /* [TLS1]TODO: Re-try these queries if possible.*/ + /* getdns_network_req *netreq; while (upstream->netreq_by_query_id.count) { netreq = (getdns_network_req *) _getdns_rbtree_first(&upstream->netreq_by_query_id); stub_cleanup(netreq); - _getdns_netreq_change_state(netreq, NET_REQ_FINISHED); + _getdns_netreq_change_state(netreq, NET_REQ_ERRORED); _getdns_check_dns_req_complete(netreq->owner); } + */ } upstream->conn_state = GETDNS_CONN_TEARDOWN; @@ -778,6 +780,8 @@ stub_tcp_write(int fd, getdns_tcp_state *tcp, getdns_network_req *netreq) } while (!_getdns_rbtree_insert( &netreq->upstream->netreq_by_query_id, &netreq->node)); + netreq->query_id = query_id; + GLDNS_ID_SET(netreq->query, query_id); if (netreq->opt) { _getdns_network_req_clear_upstream_options(netreq); @@ -836,8 +840,13 @@ stub_tcp_write(int fd, getdns_tcp_state *tcp, getdns_network_req *netreq) return STUB_TCP_WOULDBLOCK; - } else if (written == -1) + } else if (written == -1) { + DEBUG_STUB("%s %-35s: MSG: %p error while writing to TCP socket:" + " %s\n", STUB_DEBUG_WRITE, __FUNC__, (void*)netreq + , strerror(errno)); + return STUB_TCP_ERROR; + } /* We were able to write everything! Start reading. */ return (int) query_id; @@ -856,8 +865,13 @@ stub_tcp_write(int fd, getdns_tcp_state *tcp, getdns_network_req *netreq) if (written == -1) { if (_getdns_EWOULDBLOCK) return STUB_TCP_WOULDBLOCK; - else + else { + DEBUG_STUB("%s %-35s: MSG: %p error while writing to TCP socket:" + " %s\n", STUB_DEBUG_WRITE, __FUNC__, (void*)netreq + , strerror(errno)); + return STUB_TCP_ERROR; + } } tcp->written += written; if (tcp->written < tcp->write_buf_len) @@ -1480,6 +1494,7 @@ stub_udp_write_cb(void *userarg) getdns_network_req *netreq = (getdns_network_req *)userarg; getdns_dns_req *dnsreq = netreq->owner; size_t pkt_len; + ssize_t written; DEBUG_STUB("%s %-35s: MSG: %p \n", STUB_DEBUG_WRITE, __FUNC__, (void *)netreq); @@ -1504,15 +1519,34 @@ stub_udp_write_cb(void *userarg) return; /* too many upstream options */ } pkt_len = _getdns_network_req_add_tsig(netreq); - if ((ssize_t)pkt_len != sendto( + if ((ssize_t)pkt_len != (written = sendto( netreq->fd, (const void *)netreq->query, pkt_len, 0, (struct sockaddr *)&netreq->upstream->addr, - netreq->upstream->addr_len)) { -#ifdef USE_WINSOCK - closesocket(netreq->fd); -#else - close(netreq->fd); + netreq->upstream->addr_len))) { + +#if defined(STUB_DEBUG) && STUB_DEBUG + if (written == -1) + DEBUG_STUB( "%s %-35s: MSG: %p error: %s\n" + , STUB_DEBUG_WRITE, __FUNC__, (void *)netreq + , strerror(errno)); + else + DEBUG_STUB( "%s %-35s: MSG: %p returned: %d, expeced: %d\n" + , STUB_DEBUG_WRITE, __FUNC__, (void *)netreq + , (int)written, (int)pkt_len); #endif + stub_cleanup(netreq); + _getdns_netreq_change_state(netreq, NET_REQ_ERRORED); + /* Handle upstream*/ + if (netreq->fd >= 0) { +#ifdef USE_WINSOCK + closesocket(netreq->fd); +#else + close(netreq->fd); +#endif + stub_next_upstream(netreq); + } + netreq->debug_end_time = _getdns_get_time_as_uintt64(); + _getdns_check_dns_req_complete(netreq->owner); return; } GETDNS_SCHEDULE_EVENT(dnsreq->loop, netreq->fd, @@ -1709,7 +1743,7 @@ upstream_write_cb(void *userarg) #endif if (fallback_on_write(netreq) == STUB_TCP_ERROR) { /* TODO: Need new state to report transport unavailable*/ - _getdns_netreq_change_state(netreq, NET_REQ_FINISHED); + _getdns_netreq_change_state(netreq, NET_REQ_ERRORED); _getdns_check_dns_req_complete(netreq->owner); } return; From 64d1063dec9e2d8e4f7375e6f9e65c94ea34ecb7 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 14 Jun 2017 16:31:45 +0200 Subject: [PATCH 28/35] Dashes in front of release candidates! --- configure.ac | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configure.ac b/configure.ac index 6281e573..c6bd47a5 100644 --- a/configure.ac +++ b/configure.ac @@ -37,6 +37,10 @@ sinclude(./m4/ax_check_compile_flag.m4) sinclude(./m4/pkg.m4) AC_INIT([getdns], [1.1.1], [users@getdnsapi.net], [], [https://getdnsapi.net]) + +# Dont forget to put a dash in front of the release candidate!!! +# That is how it is done with semantic versioning! +# AC_SUBST(RELEASE_CANDIDATE, [rc1]) # Set current date from system if not set From d9158e639b3df09ed58111216a5a30c55f5c72b9 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 15 Jun 2017 17:21:05 +0200 Subject: [PATCH 29/35] Clear netreq_by_query_id on upstream failure But don't error the specific netreq then! --- src/stub.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/stub.c b/src/stub.c index 2514cf7f..8e045388 100644 --- a/src/stub.c +++ b/src/stub.c @@ -565,7 +565,6 @@ upstream_failed(getdns_upstream *upstream, int during_setup) } else { upstream->conn_shutdowns++; /* [TLS1]TODO: Re-try these queries if possible.*/ - /* getdns_network_req *netreq; while (upstream->netreq_by_query_id.count) { netreq = (getdns_network_req *) @@ -574,7 +573,6 @@ upstream_failed(getdns_upstream *upstream, int during_setup) _getdns_netreq_change_state(netreq, NET_REQ_ERRORED); _getdns_check_dns_req_complete(netreq->owner); } - */ } upstream->conn_state = GETDNS_CONN_TEARDOWN; @@ -781,8 +779,8 @@ stub_tcp_write(int fd, getdns_tcp_state *tcp, getdns_network_req *netreq) &netreq->upstream->netreq_by_query_id, &netreq->node)); netreq->query_id = query_id; - GLDNS_ID_SET(netreq->query, query_id); + if (netreq->opt) { _getdns_network_req_clear_upstream_options(netreq); /* no limits on the max udp payload size with tcp */ @@ -1282,7 +1280,9 @@ stub_tls_write(getdns_upstream *upstream, getdns_tcp_state *tcp, } while (!_getdns_rbtree_insert( &netreq->upstream->netreq_by_query_id, &netreq->node)); + netreq->query_id = query_id; GLDNS_ID_SET(netreq->query, query_id); + /* TODO: Review if more EDNS0 handling can be centralised.*/ if (netreq->opt) { _getdns_network_req_clear_upstream_options(netreq); @@ -1741,7 +1741,8 @@ upstream_write_cb(void *userarg) STUB_DEBUG_DAEMON, upstream->addr_str, (upstream->transport == GETDNS_TRANSPORT_TLS ? "TLS" : "TCP")); #endif - if (fallback_on_write(netreq) == STUB_TCP_ERROR) { + if (q != STUB_TCP_ERROR && + fallback_on_write(netreq) == STUB_TCP_ERROR) { /* TODO: Need new state to report transport unavailable*/ _getdns_netreq_change_state(netreq, NET_REQ_ERRORED); _getdns_check_dns_req_complete(netreq->owner); @@ -1760,7 +1761,7 @@ upstream_write_cb(void *userarg) /* Need this because auth status is reset on connection close */ netreq->debug_tls_auth_status = netreq->upstream->tls_auth_state; upstream->queries_sent++; - netreq->query_id = (uint16_t) q; + /* Unqueue the netreq from the write_queue */ if (!(upstream->write_queue = netreq->write_queue_tail)) { upstream->write_queue_last = NULL; @@ -2090,6 +2091,8 @@ upstream_find_for_netreq(getdns_network_req *netreq) netreq->transport_current = i; netreq->upstream = upstream; netreq->keepalive_sent = 0; + + DEBUG_STUB("%s %-35s: MSG: %p found upstream %p with transport %d, fd: %d\n", STUB_DEBUG_SCHEDULE, __FUNC__, (void*)netreq, (void *)upstream, (int)netreq->transports[i], fd); return fd; } /* Handle better, will give generic error*/ From 1d874378541e55dcf2d94b5f4b705ff2ffd87c4b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 15 Jun 2017 21:15:00 +0200 Subject: [PATCH 30/35] ERROR all outstanding netreqs whith a failed statefull upstream Remove the currently processed netreq first, so it can be retries with another upstream/transport. We MUST add netreq to the netreqs_by_query_id map even before we write to it, to have a reliable store of taken query ids. --- src/stub.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/stub.c b/src/stub.c index 8e045388..564a3415 100644 --- a/src/stub.c +++ b/src/stub.c @@ -540,6 +540,8 @@ stub_cleanup(getdns_network_req *netreq) static void upstream_failed(getdns_upstream *upstream, int during_setup) { + getdns_network_req *netreq; + DEBUG_STUB("%s %-35s: FD: %d Failure during connection setup = %d\n", STUB_DEBUG_CLEANUP, __FUNC__, upstream->fd, during_setup); /* Fallback code should take care of queue queries and then close conn @@ -565,16 +567,14 @@ upstream_failed(getdns_upstream *upstream, int during_setup) } else { upstream->conn_shutdowns++; /* [TLS1]TODO: Re-try these queries if possible.*/ - getdns_network_req *netreq; - while (upstream->netreq_by_query_id.count) { - netreq = (getdns_network_req *) - _getdns_rbtree_first(&upstream->netreq_by_query_id); - stub_cleanup(netreq); - _getdns_netreq_change_state(netreq, NET_REQ_ERRORED); - _getdns_check_dns_req_complete(netreq->owner); - } } - + while (upstream->netreq_by_query_id.count) { + netreq = (getdns_network_req *) + _getdns_rbtree_first(&upstream->netreq_by_query_id); + stub_cleanup(netreq); + _getdns_netreq_change_state(netreq, NET_REQ_ERRORED); + _getdns_check_dns_req_complete(netreq->owner); + } upstream->conn_state = GETDNS_CONN_TEARDOWN; } @@ -1723,6 +1723,7 @@ upstream_write_cb(void *userarg) */ case STUB_TCP_WOULDBLOCK: return; + case STUB_OUT_OF_OPTIONS: case STUB_TCP_ERROR: /* New problem with the TCP connection itself. Need to fallback.*/ /* Fall through */ @@ -1730,6 +1731,8 @@ upstream_write_cb(void *userarg) /* Could not complete the set up. Need to fallback.*/ DEBUG_STUB("%s %-35s: Upstream: %p ERROR = %d\n", STUB_DEBUG_WRITE, __FUNC__, (void*)userarg, q); + (void) _getdns_rbtree_delete( + &upstream->netreq_by_query_id, (void *)(intptr_t)netreq->query_id); upstream_failed(upstream, (q == STUB_TCP_ERROR ? 0:1)); /* Fall through */ case STUB_CONN_GONE: @@ -1741,8 +1744,7 @@ upstream_write_cb(void *userarg) STUB_DEBUG_DAEMON, upstream->addr_str, (upstream->transport == GETDNS_TRANSPORT_TLS ? "TLS" : "TCP")); #endif - if (q != STUB_TCP_ERROR && - fallback_on_write(netreq) == STUB_TCP_ERROR) { + if (fallback_on_write(netreq) == STUB_TCP_ERROR) { /* TODO: Need new state to report transport unavailable*/ _getdns_netreq_change_state(netreq, NET_REQ_ERRORED); _getdns_check_dns_req_complete(netreq->owner); From 9a273cf14476eb9e833a0ecbc236c271eb4947c6 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 15 Jun 2017 21:24:40 +0200 Subject: [PATCH 31/35] Get rid of superfluous struct member query_id --- src/mdns.c | 5 ++--- src/request-internal.c | 1 - src/stub.c | 17 ++++++----------- src/types-internal.h | 1 - 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/mdns.c b/src/mdns.c index 28de951f..56ce7013 100644 --- a/src/mdns.c +++ b/src/mdns.c @@ -1746,7 +1746,7 @@ mdns_udp_read_cb(void *userarg) if (read < GLDNS_HEADER_SIZE) return; /* Not DNS */ - if (GLDNS_ID_WIRE(netreq->response) != netreq->query_id) + if (GLDNS_ID_WIRE(netreq->response) != GLDNS_ID_WIRE(netreq->query)) return; /* Cache poisoning attempt ;) */ // TODO: check whether EDNS server cookies are required for MDNS @@ -1788,8 +1788,7 @@ mdns_udp_write_cb(void *userarg) netreq->debug_start_time = _getdns_get_time_as_uintt64(); netreq->debug_udp = 1; - netreq->query_id = (uint16_t) arc4random(); - GLDNS_ID_SET(netreq->query, netreq->query_id); + GLDNS_ID_SET(netreq->query, (uint16_t) arc4random()); /* do we need to handle options valid in the MDNS context? */ diff --git a/src/request-internal.c b/src/request-internal.c index d91563f4..15f97179 100644 --- a/src/request-internal.c +++ b/src/request-internal.c @@ -125,7 +125,6 @@ netreq_reset(getdns_network_req *net_req) _getdns_netreq_change_state(net_req, NET_REQ_NOT_SENT); net_req->dnssec_status = GETDNS_DNSSEC_INDETERMINATE; net_req->tsig_status = GETDNS_DNSSEC_INDETERMINATE; - net_req->query_id = 0; net_req->response_len = 0; /* Some fields to record info for return_call_reporting */ net_req->debug_start_time = 0; diff --git a/src/stub.c b/src/stub.c index 564a3415..f900d35c 100644 --- a/src/stub.c +++ b/src/stub.c @@ -505,7 +505,6 @@ stub_cleanup(getdns_network_req *netreq) getdns_dns_req *dnsreq = netreq->owner; getdns_network_req *r, *prev_r; getdns_upstream *upstream; - intptr_t query_id_intptr; GETDNS_CLEAR_EVENT(dnsreq->loop, &netreq->event); @@ -514,9 +513,8 @@ stub_cleanup(getdns_network_req *netreq) return; /* Delete from upstream->netreq_by_query_id (if present) */ - query_id_intptr = (intptr_t)netreq->query_id; - (void) _getdns_rbtree_delete( - &upstream->netreq_by_query_id, (void *)query_id_intptr); + (void) _getdns_rbtree_delete(&upstream->netreq_by_query_id, + (void *)(intptr_t)GLDNS_ID_WIRE(netreq->query)); /* Delete from upstream->write_queue (if present) */ for (prev_r = NULL, r = upstream->write_queue; r; @@ -778,7 +776,6 @@ stub_tcp_write(int fd, getdns_tcp_state *tcp, getdns_network_req *netreq) } while (!_getdns_rbtree_insert( &netreq->upstream->netreq_by_query_id, &netreq->node)); - netreq->query_id = query_id; GLDNS_ID_SET(netreq->query, query_id); if (netreq->opt) { @@ -1280,7 +1277,6 @@ stub_tls_write(getdns_upstream *upstream, getdns_tcp_state *tcp, } while (!_getdns_rbtree_insert( &netreq->upstream->netreq_by_query_id, &netreq->node)); - netreq->query_id = query_id; GLDNS_ID_SET(netreq->query, query_id); /* TODO: Review if more EDNS0 handling can be centralised.*/ @@ -1430,7 +1426,7 @@ stub_udp_read_cb(void *userarg) if (read < GLDNS_HEADER_SIZE) return; /* Not DNS */ - if (GLDNS_ID_WIRE(netreq->response) != netreq->query_id) + if (GLDNS_ID_WIRE(netreq->response) != GLDNS_ID_WIRE(netreq->query)) return; /* Cache poisoning attempt ;) */ if (netreq->owner->edns_cookies && match_and_process_server_cookie( @@ -1502,8 +1498,7 @@ stub_udp_write_cb(void *userarg) netreq->debug_start_time = _getdns_get_time_as_uintt64(); netreq->debug_udp = 1; - netreq->query_id = arc4random(); - GLDNS_ID_SET(netreq->query, netreq->query_id); + GLDNS_ID_SET(netreq->query, (uint16_t)arc4random()); if (netreq->opt) { _getdns_network_req_clear_upstream_options(netreq); if (netreq->edns_maximum_udp_payload_size == -1) @@ -1731,8 +1726,8 @@ upstream_write_cb(void *userarg) /* Could not complete the set up. Need to fallback.*/ DEBUG_STUB("%s %-35s: Upstream: %p ERROR = %d\n", STUB_DEBUG_WRITE, __FUNC__, (void*)userarg, q); - (void) _getdns_rbtree_delete( - &upstream->netreq_by_query_id, (void *)(intptr_t)netreq->query_id); + (void) _getdns_rbtree_delete(&upstream->netreq_by_query_id, + (void *)(intptr_t)GLDNS_ID_WIRE(netreq->query)); upstream_failed(upstream, (q == STUB_TCP_ERROR ? 0:1)); /* Fall through */ case STUB_CONN_GONE: diff --git a/src/types-internal.h b/src/types-internal.h index 22cf649a..7834fc32 100644 --- a/src/types-internal.h +++ b/src/types-internal.h @@ -226,7 +226,6 @@ typedef struct getdns_network_req size_t transport_current; getdns_tls_authentication_t tls_auth_min; getdns_eventloop_event event; - uint16_t query_id; int edns_maximum_udp_payload_size; uint16_t max_udp_payload_size; From 606b83d8576ceeeeb6adbd191953a39c40be52e2 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 15 Jun 2017 21:43:23 +0200 Subject: [PATCH 32/35] Bump version --- ChangeLog | 4 +++- configure.ac | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1ebc847d..fab12d74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,6 @@ -* 2017-06-??: Version 1.1.1 +* 2017-06-15: Version 1.1.1 + * Bugfix #306 hanging/segfaulting on certain (IPv6) upstream failures + * Spelling fix s/receive/receive. Thanks Andreas Schulze. * Added stubby-setdns-macos.sh script to support Homebrew formula * Include stubby.conf in the districution tarball * Bugfix #286 reschedule reused listening addresses diff --git a/configure.ac b/configure.ac index c6bd47a5..708a3979 100644 --- a/configure.ac +++ b/configure.ac @@ -41,7 +41,7 @@ AC_INIT([getdns], [1.1.1], [users@getdnsapi.net], [], [https://getdnsapi.net]) # Dont forget to put a dash in front of the release candidate!!! # That is how it is done with semantic versioning! # -AC_SUBST(RELEASE_CANDIDATE, [rc1]) +AC_SUBST(RELEASE_CANDIDATE, []) # Set current date from system if not set AC_ARG_WITH([current-date], @@ -51,7 +51,7 @@ AC_ARG_WITH([current-date], [CURRENT_DATE="`date -u +%Y-%m-%dT%H:%M:%SZ`"]) AC_SUBST(GETDNS_VERSION, ["AC_PACKAGE_VERSION$RELEASE_CANDIDATE"]) -AC_SUBST(GETDNS_NUMERIC_VERSION, [0x010100c1]) +AC_SUBST(GETDNS_NUMERIC_VERSION, [0x01010100]) AC_SUBST(API_VERSION, ["December 2015"]) AC_SUBST(API_NUMERIC_VERSION, [0x07df0c00]) GETDNS_COMPILATION_COMMENT="AC_PACKAGE_NAME $GETDNS_VERSION configured on $CURRENT_DATE for the $API_VERSION version of the API" @@ -83,7 +83,7 @@ GETDNS_COMPILATION_COMMENT="AC_PACKAGE_NAME $GETDNS_VERSION configured on $CURRE # getdns-0.9.0 had libversion 5:0:4 # getdns-1.0.0 had libversion 5:1:4 # getdns-1.1.0 had libversion 6:0:0 -# getdns-1.1.1 will have libversion 6:1:0 +# getdns-1.1.1 has libversion 6:1:0 # GETDNS_LIBVERSION=6:1:0 From a07290a9b0d1bb922552f81a91f96432dda0706b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Mon, 19 Jun 2017 12:06:34 +0200 Subject: [PATCH 33/35] Bugfix for parallel make install --- Makefile.in | 4 ++-- src/tools/Makefile.in | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.in b/Makefile.in index 66f2729b..d0f1be06 100644 --- a/Makefile.in +++ b/Makefile.in @@ -112,13 +112,13 @@ scratchpad: default pad: scratchpad src/test/scratchpad || ./libtool exec gdb src/test/scratchpad -install-getdns_query: +install-getdns_query: getdns_query cd src/tools && $(MAKE) $@ uninstall-getdns_query: cd src/tools && $(MAKE) $@ -install-stubby: +install-stubby: stubby cd src/tools && $(MAKE) $@ uninstall-stubby: diff --git a/src/tools/Makefile.in b/src/tools/Makefile.in index d066e824..ffbddb48 100644 --- a/src/tools/Makefile.in +++ b/src/tools/Makefile.in @@ -78,7 +78,7 @@ install-getdns_query: getdns_query uninstall-getdns_query: $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/getdns_query -install-stubby: getdns_query +install-stubby: stubby $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) $(LIBTOOL) --mode=install cp getdns_query $(DESTDIR)$(bindir)/stubby From 5e1cceca82ea8a2956b2e1f27d6c989fecd63b3c Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Mon, 19 Jun 2017 12:12:09 +0200 Subject: [PATCH 34/35] Stubby is installed from getdns_query directly --- Makefile.in | 2 +- src/tools/Makefile.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.in b/Makefile.in index d0f1be06..4945da49 100644 --- a/Makefile.in +++ b/Makefile.in @@ -118,7 +118,7 @@ install-getdns_query: getdns_query uninstall-getdns_query: cd src/tools && $(MAKE) $@ -install-stubby: stubby +install-stubby: getdns_query cd src/tools && $(MAKE) $@ uninstall-stubby: diff --git a/src/tools/Makefile.in b/src/tools/Makefile.in index ffbddb48..d066e824 100644 --- a/src/tools/Makefile.in +++ b/src/tools/Makefile.in @@ -78,7 +78,7 @@ install-getdns_query: getdns_query uninstall-getdns_query: $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/getdns_query -install-stubby: stubby +install-stubby: getdns_query $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) $(LIBTOOL) --mode=install cp getdns_query $(DESTDIR)$(bindir)/stubby From ac084db23187fe2b7d381b61f9ece8d2d5927753 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Mon, 19 Jun 2017 12:19:14 +0200 Subject: [PATCH 35/35] Don't build libtool stubby if installed directly --- Makefile.in | 2 +- src/tools/Makefile.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.in b/Makefile.in index 4945da49..22350b55 100644 --- a/Makefile.in +++ b/Makefile.in @@ -52,7 +52,7 @@ everything: default default: cd src && $(MAKE) $@ -install: all getdns.pc getdns_ext_event.pc @INSTALL_GETDNS_QUERY@ @INSTALL_STUBBY@ +install: default getdns.pc getdns_ext_event.pc @INSTALL_GETDNS_QUERY@ @INSTALL_STUBBY@ $(INSTALL) -m 755 -d $(DESTDIR)$(docdir) $(INSTALL) -m 644 $(srcdir)/AUTHORS $(DESTDIR)$(docdir) $(INSTALL) -m 644 $(srcdir)/ChangeLog $(DESTDIR)$(docdir) diff --git a/src/tools/Makefile.in b/src/tools/Makefile.in index d066e824..7e291603 100644 --- a/src/tools/Makefile.in +++ b/src/tools/Makefile.in @@ -86,7 +86,7 @@ uninstall-stubby: $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/stubby clean: - rm -f *.o *.lo $(PROGRAMS) + rm -f *.o *.lo $(PROGRAMS) stubby rm -rf .libs distclean : clean