From abe4be55020902e0b1c23f32edc3e3d5ce00ec30 Mon Sep 17 00:00:00 2001 From: Tomas Hozza Date: Jan 06 2014 14:06:20 +0000 Subject: Update to bind-9.9.5b1 Signed-off-by: Tomas Hozza --- diff --git a/.gitignore b/.gitignore index 21d95cf..7960188 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ bind-9.7.2b1.tar.gz /bind-9.9.4rc2.tar.gz /bind-9.9.4.tar.gz /config-12.tar.bz2 +/bind-9.9.5b1.tar.gz diff --git a/bind-9.5-libidn.patch b/bind-9.5-libidn.patch index e0831e4..739661e 100644 --- a/bind-9.5-libidn.patch +++ b/bind-9.5-libidn.patch @@ -1,6 +1,6 @@ -diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c ---- bind-9.7.0b1/bin/dig/dighost.c.libidn 2009-09-16 01:48:09.000000000 +0200 -+++ bind-9.7.0b1/bin/dig/dighost.c 2009-10-20 10:49:26.719056220 +0200 +diff -up bind-9.9.5b1/bin/dig/dighost.c.libidn bind-9.9.5b1/bin/dig/dighost.c +--- bind-9.9.5b1/bin/dig/dighost.c.libidn 2013-12-12 06:59:59.000000000 +0100 ++++ bind-9.9.5b1/bin/dig/dighost.c 2014-01-06 13:48:34.591300772 +0100 @@ -44,6 +44,11 @@ #include #endif @@ -13,7 +13,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c #include #ifdef DIG_SIGCHASE #include -@@ -153,6 +158,14 @@ static void idn_check_result(idn_result +@@ -158,6 +163,14 @@ static void idn_check_result(idn_result int idnoptions = 0; #endif @@ -25,10 +25,10 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c + isc_boolean_t absolute); +#endif + - /*% - * Exit Codes: - * -@@ -1184,6 +1197,9 @@ setup_system(void) { + isc_socket_t *keep = NULL; + isc_sockaddr_t keepaddr; + +@@ -1210,6 +1223,9 @@ setup_system(void) { dig_searchlist_t *domain = NULL; lwres_result_t lwresult; unsigned int lwresflags; @@ -38,7 +38,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c debug("setup_system()"); -@@ -1242,8 +1258,15 @@ setup_system(void) { +@@ -1268,8 +1284,15 @@ setup_system(void) { #ifdef WITH_IDN initialize_idn(); @@ -55,7 +55,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c if (keyfile[0] != 0) setup_file_key(); else if (keysecret[0] != 0) -@@ -1957,12 +1980,18 @@ setup_lookup(dig_lookup_t *lookup) { +@@ -2028,12 +2051,18 @@ setup_lookup(dig_lookup_t *lookup) { idn_result_t mr; char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; #endif @@ -75,7 +75,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c REQUIRE(lookup != NULL); INSIST(!free_now); -@@ -1999,6 +2028,16 @@ setup_lookup(dig_lookup_t *lookup) { +@@ -2070,6 +2099,16 @@ setup_lookup(dig_lookup_t *lookup) { mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname, utf8_textname, sizeof(utf8_textname)); idn_check_result(mr, "convert textname to UTF-8"); @@ -92,7 +92,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c #endif /* -@@ -2018,6 +2057,15 @@ setup_lookup(dig_lookup_t *lookup) { +@@ -2089,6 +2128,15 @@ setup_lookup(dig_lookup_t *lookup) { lookup->origin = ISC_LIST_HEAD(search_list); lookup->need_search = ISC_FALSE; } @@ -108,7 +108,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c #else if ((count_dots(lookup->textname) >= ndots) || !usesearch) { lookup->origin = NULL; /* Force abs lookup */ -@@ -2044,6 +2092,20 @@ setup_lookup(dig_lookup_t *lookup) { +@@ -2115,6 +2163,20 @@ setup_lookup(dig_lookup_t *lookup) { IDN_IDNCONV | IDN_LENCHECK, utf8_textname, idn_textname, sizeof(idn_textname)); idn_check_result(mr, "convert UTF-8 textname to IDN encoding"); @@ -129,7 +129,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c #else if (lookup->origin != NULL) { debug("trying origin %s", lookup->origin->origin); -@@ -2099,6 +2161,13 @@ setup_lookup(dig_lookup_t *lookup) { +@@ -2170,6 +2232,13 @@ setup_lookup(dig_lookup_t *lookup) { result = dns_name_fromtext(lookup->name, &b, dns_rootname, 0, &lookup->namebuf); @@ -143,7 +143,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c #else len = strlen(lookup->textname); isc_buffer_init(&b, lookup->textname, len); -@@ -3617,7 +3686,7 @@ destroy_libs(void) { +@@ -3784,7 +3853,7 @@ destroy_libs(void) { void * ptr; dig_message_t *chase_msg; #endif @@ -152,7 +152,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c isc_result_t result; #endif -@@ -3656,6 +3725,10 @@ destroy_libs(void) { +@@ -3825,6 +3894,10 @@ destroy_libs(void) { result = dns_name_settotextfilter(NULL); check_result(result, "dns_name_settotextfilter"); #endif @@ -163,7 +163,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c dns_name_destroy(); if (commctx != NULL) { -@@ -3834,6 +3907,79 @@ idn_check_result(idn_result_t r, const c +@@ -4003,6 +4076,79 @@ idn_check_result(idn_result_t r, const c } } #endif /* WITH_IDN */ @@ -243,10 +243,10 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c #ifdef DIG_SIGCHASE void -diff -up bind-9.7.0b1/bin/dig/Makefile.in.libidn bind-9.7.0b1/bin/dig/Makefile.in ---- bind-9.7.0b1/bin/dig/Makefile.in.libidn 2009-09-22 10:47:55.000000000 +0200 -+++ bind-9.7.0b1/bin/dig/Makefile.in 2009-10-20 10:50:06.201543709 +0200 -@@ -46,10 +46,10 @@ DEPLIBS = ${DNSDEPLIBS} ${BIND9DEPLIBS} +diff -up bind-9.9.5b1/bin/dig/Makefile.in.libidn bind-9.9.5b1/bin/dig/Makefile.in +--- bind-9.9.5b1/bin/dig/Makefile.in.libidn 2013-12-12 06:59:59.000000000 +0100 ++++ bind-9.9.5b1/bin/dig/Makefile.in 2014-01-06 13:31:27.764809004 +0100 +@@ -48,10 +48,10 @@ DEPLIBS = ${DNSDEPLIBS} ${BIND9DEPLIBS} ${LWRESDEPLIBS} LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \ @@ -259,7 +259,7 @@ diff -up bind-9.7.0b1/bin/dig/Makefile.in.libidn bind-9.7.0b1/bin/dig/Makefile.i SUBDIRS = -@@ -67,6 +67,8 @@ HTMLPAGES = dig.html host.html nslookup. +@@ -69,6 +69,8 @@ HTMLPAGES = dig.html host.html nslookup. MANOBJS = ${MANPAGES} ${HTMLPAGES} diff --git a/bind.spec b/bind.spec index 83085e9..978d821 100644 --- a/bind.spec +++ b/bind.spec @@ -3,9 +3,9 @@ # #%%global PATCHVER P1 -#%%global PREVER rc2 -#%%global VERSION %{version}%{PREVER} -%global VERSION %{version} +%global PREVER b1 +%global VERSION %{version}%{PREVER} +#%%global VERSION %{version} #%%global VERSION %{version}-%{PATCHVER} %{?!SDB: %global SDB 1} @@ -29,8 +29,8 @@ Summary: The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server Name: bind License: ISC -Version: 9.9.4 -Release: 11%{?PATCHVER}%{?PREVER}%{?dist} +Version: 9.9.5 +Release: 0.1.%{?PATCHVER}%{?PREVER}%{?dist} Epoch: 32 Url: http://www.isc.org/products/BIND/ Buildroot:%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -89,11 +89,6 @@ Patch134:bind97-rh669163.patch Patch137:bind99-rrl.patch # Install dns/update.h header for bind-dyndb-ldap plugin Patch138:bind-9.9.3-include-update-h.patch -Patch139:bind99-ISC-Bugs-34738.patch -# upstream patch [ISC-Bugs #34870] -Patch140:bind99-ISC-Bugs-34870-v3.patch -# upstream applied patch for [ISC-Bugs #35073] -Patch141:bind99-ISC-Bugs-35073.patch Patch142:bind99-ISC-Bugs-35080.patch # SDB patches @@ -308,9 +303,6 @@ popd %patch131 -p1 -b .multlib-conflict %patch137 -p1 -b .rrl %patch138 -p1 -b .update -%patch139 -p1 -b .journal -%patch140 -p1 -b .send_buffer -%patch141 -p1 -b .leak_35073 %patch142 -p1 -b .rbtdb_crash %if %{SDB} @@ -840,8 +832,10 @@ rm -rf ${RPM_BUILD_ROOT} %exclude %{_libdir}/*export.so %{_includedir}/bind9 %{_mandir}/man1/isc-config.sh.1* +%{_mandir}/man1/bind9-config.1* %{_mandir}/man3/lwres* %{_bindir}/isc-config.sh +%{_bindir}/bind9-config %endif %files lite-devel @@ -924,6 +918,9 @@ rm -rf ${RPM_BUILD_ROOT} %endif %changelog +* Mon Jan 06 2014 Tomas Hozza 32:9.9.5-0.1.b1 +- Update to bind-9.9.5b1 + * Wed Dec 18 2013 Tomas Hozza 32:9.9.4-11 - Fix crash in rbtdb after two sucessive getoriginnode() calls diff --git a/bind97-rh570851.patch b/bind97-rh570851.patch index e24b94c..08fc682 100644 --- a/bind97-rh570851.patch +++ b/bind97-rh570851.patch @@ -1,17 +1,15 @@ -diff -up bind-9.7.2b1/bin/dig/dighost.c.rh570851 bind-9.7.2b1/bin/dig/dighost.c ---- bind-9.7.2b1/bin/dig/dighost.c.rh570851 2010-08-10 12:55:14.219403986 +0200 -+++ bind-9.7.2b1/bin/dig/dighost.c 2010-08-10 12:56:40.716015777 +0200 -@@ -126,7 +126,8 @@ isc_boolean_t - usesearch = ISC_FALSE, +diff -up bind-9.9.5b1/bin/dig/dighost.c.rh570851 bind-9.9.5b1/bin/dig/dighost.c +--- bind-9.9.5b1/bin/dig/dighost.c.rh570851 2014-01-06 13:49:25.230380554 +0100 ++++ bind-9.9.5b1/bin/dig/dighost.c 2014-01-06 13:54:25.804839409 +0100 +@@ -131,6 +131,7 @@ isc_boolean_t showsearch = ISC_FALSE, qr = ISC_FALSE, -- is_dst_up = ISC_FALSE; -+ is_dst_up = ISC_FALSE, -+ verbose = ISC_FALSE; + is_dst_up = ISC_FALSE, ++ verbose = ISC_FALSE, + keep_open = ISC_FALSE; in_port_t port = 53; unsigned int timeout = 0; - unsigned int extrabytes; -@@ -1240,10 +1241,24 @@ setup_system(void) { +@@ -1257,10 +1258,24 @@ setup_system(void) { } } @@ -36,10 +34,10 @@ diff -up bind-9.7.2b1/bin/dig/dighost.c.rh570851 bind-9.7.2b1/bin/dig/dighost.c /* If user doesn't specify server use nameservers from resolv.conf. */ if (ISC_LIST_EMPTY(server_list)) -diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c ---- bind-9.7.2b1/bin/dig/host.c.rh570851 2010-08-10 12:57:16.032758098 +0200 -+++ bind-9.7.2b1/bin/dig/host.c 2010-08-10 13:02:12.848559845 +0200 -@@ -659,6 +659,7 @@ parse_args(isc_boolean_t is_batchfile, i +diff -up bind-9.9.5b1/bin/dig/host.c.rh570851 bind-9.9.5b1/bin/dig/host.c +--- bind-9.9.5b1/bin/dig/host.c.rh570851 2013-12-12 06:59:59.000000000 +0100 ++++ bind-9.9.5b1/bin/dig/host.c 2014-01-06 13:49:25.241380571 +0100 +@@ -672,6 +672,7 @@ parse_args(isc_boolean_t is_batchfile, i lookup->servfail_stops = ISC_FALSE; lookup->comments = ISC_FALSE; @@ -47,7 +45,7 @@ diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) { switch (c) { -@@ -869,8 +870,8 @@ main(int argc, char **argv) { +@@ -882,8 +883,8 @@ main(int argc, char **argv) { result = isc_app_start(); check_result(result, "isc_app_start"); setup_libs(); @@ -57,10 +55,10 @@ diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c result = isc_app_onrun(mctx, global_task, onrun_callback, NULL); check_result(result, "isc_app_onrun"); isc_app_run(); -diff -up bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 bind-9.7.2b1/bin/dig/include/dig/dig.h ---- bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 2010-08-10 13:02:32.722244088 +0200 -+++ bind-9.7.2b1/bin/dig/include/dig/dig.h 2010-08-10 13:02:48.465158159 +0200 -@@ -278,6 +278,7 @@ extern isc_boolean_t debugging, memdebug +diff -up bind-9.9.5b1/bin/dig/include/dig/dig.h.rh570851 bind-9.9.5b1/bin/dig/include/dig/dig.h +--- bind-9.9.5b1/bin/dig/include/dig/dig.h.rh570851 2013-12-12 06:59:59.000000000 +0100 ++++ bind-9.9.5b1/bin/dig/include/dig/dig.h 2014-01-06 13:49:25.241380571 +0100 +@@ -281,6 +281,7 @@ extern isc_boolean_t keep_open; extern char *progname; extern int tries; extern int fatalexit; @@ -68,9 +66,9 @@ diff -up bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 bind-9.7.2b1/bin/dig/in #ifdef WITH_IDN extern int idnoptions; #endif -diff -up bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.7.2b1/lib/lwres/include/lwres/lwres.h ---- bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 2010-08-10 13:04:40.465780506 +0200 -+++ bind-9.7.2b1/lib/lwres/include/lwres/lwres.h 2010-08-10 13:05:57.559867830 +0200 +diff -up bind-9.9.5b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.9.5b1/lib/lwres/include/lwres/lwres.h +--- bind-9.9.5b1/lib/lwres/include/lwres/lwres.h.rh570851 2013-12-12 06:59:59.000000000 +0100 ++++ bind-9.9.5b1/lib/lwres/include/lwres/lwres.h 2014-01-06 13:49:25.241380571 +0100 @@ -243,6 +243,8 @@ typedef struct { lwres_uint8_t resdebug; /*%< non-zero if 'options debug' set */ lwres_uint8_t ndots; /*%< set to n in 'options ndots:n' */ @@ -80,9 +78,9 @@ diff -up bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.7.2b1/lib/ } lwres_conf_t; #define LWRES_ADDRTYPE_V4 0x00000001U /*%< ipv4 */ -diff -up bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 bind-9.7.2b1/lib/lwres/lwconfig.c ---- bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 2010-08-10 13:06:08.051778429 +0200 -+++ bind-9.7.2b1/lib/lwres/lwconfig.c 2010-08-10 13:09:53.972555776 +0200 +diff -up bind-9.9.5b1/lib/lwres/lwconfig.c.rh570851 bind-9.9.5b1/lib/lwres/lwconfig.c +--- bind-9.9.5b1/lib/lwres/lwconfig.c.rh570851 2013-12-12 06:59:59.000000000 +0100 ++++ bind-9.9.5b1/lib/lwres/lwconfig.c 2014-01-06 13:49:25.241380571 +0100 @@ -237,6 +237,8 @@ lwres_conf_init(lwres_context_t *ctx) { confdata->resdebug = 0; confdata->ndots = 1; @@ -138,7 +136,7 @@ diff -up bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 bind-9.7.2b1/lib/lwres/lwcon } if (delim == EOF || delim == '\n') -@@ -716,6 +736,12 @@ lwres_conf_print(lwres_context_t *ctx, F +@@ -717,6 +737,12 @@ lwres_conf_print(lwres_context_t *ctx, F if (confdata->no_tld_query) fprintf(fp, "options no_tld_query\n"); diff --git a/bind99-ISC-Bugs-34738.patch b/bind99-ISC-Bugs-34738.patch deleted file mode 100644 index c866ac4..0000000 --- a/bind99-ISC-Bugs-34738.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 18df9e628ea10c7d607f43fcfd935e7924731f24 Mon Sep 17 00:00:00 2001 -From: Evan Hunt -Date: Mon, 9 Sep 2013 22:12:47 -0700 -Subject: [PATCH] [master] strdup journal filename - -3646. [bug] Journal filename string could be set incorrectly, - causing garbage in log messages. [RT #34738] ---- - lib/dns/journal.c | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - -diff --git a/lib/dns/journal.c b/lib/dns/journal.c -index 08aabd5..46a52e1 100644 ---- a/lib/dns/journal.c -+++ b/lib/dns/journal.c -@@ -307,7 +307,7 @@ struct dns_journal { - unsigned int magic; /*%< JOUR */ - isc_mem_t *mctx; /*%< Memory context */ - journal_state_t state; -- const char *filename; /*%< Journal file name */ -+ char *filename; /*%< Journal file name */ - FILE * fp; /*%< File handle */ - isc_offset_t offset; /*%< Current file offset */ - journal_header_t header; /*%< In-core journal header */ -@@ -573,10 +573,13 @@ journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write, - isc_mem_attach(mctx, &j->mctx); - j->state = JOURNAL_STATE_INVALID; - j->fp = NULL; -- j->filename = filename; -+ j->filename = isc_mem_strdup(mctx, filename); - j->index = NULL; - j->rawindex = NULL; - -+ if (j->filename == NULL) -+ FAIL(ISC_R_NOMEMORY); -+ - result = isc_stdio_open(j->filename, write ? "rb+" : "rb", &fp); - - if (result == ISC_R_FILENOTFOUND) { -@@ -679,6 +682,8 @@ journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write, - sizeof(journal_rawpos_t)); - j->index = NULL; - } -+ if (j->filename != NULL) -+ isc_mem_free(j->mctx, j->filename); - if (j->fp != NULL) - (void)isc_stdio_close(j->fp); - isc_mem_putanddetach(&j->mctx, j, sizeof(*j)); -@@ -1242,7 +1247,8 @@ dns_journal_destroy(dns_journal_t **journalp) { - isc_mem_put(j->mctx, j->it.target.base, j->it.target.length); - if (j->it.source.base != NULL) - isc_mem_put(j->mctx, j->it.source.base, j->it.source.length); -- -+ if (j->filename != NULL) -+ isc_mem_free(j->mctx, j->filename); - if (j->fp != NULL) - (void)isc_stdio_close(j->fp); - j->magic = 0; --- -1.8.3.1 - diff --git a/bind99-ISC-Bugs-34870-v3.patch b/bind99-ISC-Bugs-34870-v3.patch deleted file mode 100644 index 2869213..0000000 --- a/bind99-ISC-Bugs-34870-v3.patch +++ /dev/null @@ -1,213 +0,0 @@ -diff -up bind-9.9.4/bin/dig/dighost.c.send_buffers bind-9.9.4/bin/dig/dighost.c ---- bind-9.9.4/bin/dig/dighost.c.send_buffers 2013-10-31 14:22:20.296811613 +0100 -+++ bind-9.9.4/bin/dig/dighost.c 2013-10-31 14:57:00.336400190 +0100 -@@ -194,6 +194,7 @@ isc_boolean_t validated = ISC_TRUE; - isc_entropy_t *entp = NULL; - isc_mempool_t *commctx = NULL; - isc_boolean_t debugging = ISC_FALSE; -+isc_boolean_t debugtiming = ISC_FALSE; - isc_boolean_t memdebugging = ISC_FALSE; - char *progname = NULL; - isc_mutex_t lookup_lock; -@@ -553,6 +554,12 @@ debug(const char *format, ...) { - - if (debugging) { - fflush(stdout); -+ if (debugtiming) { -+ struct timeval tv; -+ (void)gettimeofday(&tv, NULL); -+ fprintf(stderr, "%ld.%06ld: ", (long)tv.tv_sec, -+ (long)tv.tv_usec); -+ } - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); -@@ -2416,8 +2423,10 @@ send_done(isc_task_t *_task, isc_event_t - - for (b = ISC_LIST_HEAD(sevent->bufferlist); - b != NULL; -- b = ISC_LIST_HEAD(sevent->bufferlist)) -+ b = ISC_LIST_HEAD(sevent->bufferlist)) { - ISC_LIST_DEQUEUE(sevent->bufferlist, b, link); -+ isc_mem_free(mctx, b); -+ } - - query = event->ev_arg; - query->waiting_senddone = ISC_FALSE; -@@ -2609,6 +2618,17 @@ send_tcp_connect(dig_query_t *query) { - } - } - -+static isc_buffer_t * -+clone_buffer(isc_buffer_t *source) { -+ isc_buffer_t *buffer; -+ buffer = isc_mem_allocate(mctx, sizeof(*buffer)); -+ if (buffer == NULL) -+ fatal("memory allocation failure in %s:%d", -+ __FILE__, __LINE__); -+ *buffer = *source; -+ return (buffer); -+} -+ - /*% - * Send a UDP packet to the remote nameserver, possible starting the - * recv action as well. Also make sure that the timer is running and -@@ -2618,6 +2638,7 @@ static void - send_udp(dig_query_t *query) { - dig_lookup_t *l = NULL; - isc_result_t result; -+ isc_buffer_t *sendbuf; - - debug("send_udp(%p)", query); - -@@ -2664,14 +2685,16 @@ send_udp(dig_query_t *query) { - debug("recvcount=%d", recvcount); - } - ISC_LIST_INIT(query->sendlist); -- ISC_LIST_ENQUEUE(query->sendlist, &query->sendbuf, link); -+ sendbuf = clone_buffer(&query->sendbuf); -+ ISC_LIST_ENQUEUE(query->sendlist, sendbuf, link); - debug("sending a request"); - TIME_NOW(&query->time_sent); - INSIST(query->sock != NULL); - query->waiting_senddone = ISC_TRUE; -- result = isc_socket_sendtov(query->sock, &query->sendlist, -- global_task, send_done, query, -- &query->sockaddr, NULL); -+ result = isc_socket_sendtov2(query->sock, &query->sendlist, -+ global_task, send_done, query, -+ &query->sockaddr, NULL, -+ ISC_SOCKFLAG_NORETRY); - check_result(result, "isc_socket_sendtov"); - sendcount++; - } -@@ -2838,6 +2861,7 @@ static void - launch_next_query(dig_query_t *query, isc_boolean_t include_question) { - isc_result_t result; - dig_lookup_t *l; -+ isc_buffer_t *buffer; - - INSIST(!free_now); - -@@ -2861,9 +2885,15 @@ launch_next_query(dig_query_t *query, is - isc_buffer_putuint16(&query->slbuf, (isc_uint16_t) query->sendbuf.used); - ISC_LIST_INIT(query->sendlist); - ISC_LINK_INIT(&query->slbuf, link); -- ISC_LIST_ENQUEUE(query->sendlist, &query->slbuf, link); -- if (include_question) -- ISC_LIST_ENQUEUE(query->sendlist, &query->sendbuf, link); -+ if (!query->first_soa_rcvd) { -+ buffer = clone_buffer(&query->slbuf); -+ ISC_LIST_ENQUEUE(query->sendlist, buffer, link); -+ if (include_question) { -+ buffer = clone_buffer(&query->sendbuf); -+ ISC_LIST_ENQUEUE(query->sendlist, buffer, link); -+ } -+ } -+ - ISC_LINK_INIT(&query->lengthbuf, link); - ISC_LIST_ENQUEUE(query->lengthlist, &query->lengthbuf, link); - -diff -up bind-9.9.4/bin/dig/host.c.send_buffers bind-9.9.4/bin/dig/host.c ---- bind-9.9.4/bin/dig/host.c.send_buffers 2013-10-31 14:22:20.270811568 +0100 -+++ bind-9.9.4/bin/dig/host.c 2013-10-31 14:22:20.328811669 +0100 -@@ -638,6 +638,8 @@ pre_parse_args(int argc, char **argv) { - case 'w': break; - case 'C': break; - case 'D': -+ if (debugging) -+ debugtiming = ISC_TRUE; - debugging = ISC_TRUE; - break; - case 'N': break; -diff -up bind-9.9.4/bin/dig/include/dig/dig.h.send_buffers bind-9.9.4/bin/dig/include/dig/dig.h ---- bind-9.9.4/bin/dig/include/dig/dig.h.send_buffers 2013-10-31 14:22:20.270811568 +0100 -+++ bind-9.9.4/bin/dig/include/dig/dig.h 2013-10-31 14:22:20.328811669 +0100 -@@ -275,7 +275,7 @@ extern isc_boolean_t validated; - extern isc_taskmgr_t *taskmgr; - extern isc_task_t *global_task; - extern isc_boolean_t free_now; --extern isc_boolean_t debugging, memdebugging; -+extern isc_boolean_t debugging, debugtiming, memdebugging; - - extern char *progname; - extern int tries; -diff -up bind-9.9.4/lib/isc/include/isc/namespace.h.send_buffers bind-9.9.4/lib/isc/include/isc/namespace.h ---- bind-9.9.4/lib/isc/include/isc/namespace.h.send_buffers 2013-09-05 07:09:08.000000000 +0200 -+++ bind-9.9.4/lib/isc/include/isc/namespace.h 2013-10-31 14:22:20.328811669 +0100 -@@ -106,6 +106,7 @@ - #define isc_socket_sendv isc__socket_sendv - #define isc_socket_sendtov isc__socket_sendtov - #define isc_socket_sendto2 isc__socket_sendto2 -+#define isc_socket_sendtov2 isc__socket_sendtov2 - #define isc_socket_cleanunix isc__socket_cleanunix - #define isc_socket_permunix isc__socket_permunix - #define isc_socket_bind isc__socket_bind -diff -up bind-9.9.4/lib/isc/include/isc/socket.h.send_buffers bind-9.9.4/lib/isc/include/isc/socket.h ---- bind-9.9.4/lib/isc/include/isc/socket.h.send_buffers 2013-09-05 07:09:08.000000000 +0200 -+++ bind-9.9.4/lib/isc/include/isc/socket.h 2013-10-31 14:22:20.328811669 +0100 -@@ -866,6 +866,11 @@ isc_socket_sendtov(isc_socket_t *sock, i - isc_task_t *task, isc_taskaction_t action, const void *arg, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo); - isc_result_t -+isc_socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist, -+ isc_task_t *task, isc_taskaction_t action, const void *arg, -+ isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, -+ unsigned int flags); -+isc_result_t - isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region, - isc_task_t *task, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, -diff -up bind-9.9.4/lib/isc/unix/socket.c.send_buffers bind-9.9.4/lib/isc/unix/socket.c ---- bind-9.9.4/lib/isc/unix/socket.c.send_buffers 2013-10-31 14:22:20.293811608 +0100 -+++ bind-9.9.4/lib/isc/unix/socket.c 2013-10-31 14:22:20.330811673 +0100 -@@ -510,6 +510,11 @@ isc__socket_sendtov(isc_socket_t *sock, - isc_task_t *task, isc_taskaction_t action, const void *arg, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo); - ISC_SOCKETFUNC_SCOPE isc_result_t -+isc__socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist, -+ isc_task_t *task, isc_taskaction_t action, const void *arg, -+ isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, -+ unsigned int flags); -+ISC_SOCKETFUNC_SCOPE isc_result_t - isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region, - isc_task_t *task, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, -@@ -4796,15 +4801,25 @@ ISC_SOCKETFUNC_SCOPE isc_result_t - isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, - isc_task_t *task, isc_taskaction_t action, const void *arg) - { -- return (isc__socket_sendtov(sock, buflist, task, action, arg, NULL, -- NULL)); -+ return (isc__socket_sendtov2(sock, buflist, task, action, arg, NULL, -+ NULL, 0)); - } - - ISC_SOCKETFUNC_SCOPE isc_result_t --isc__socket_sendtov(isc_socket_t *sock0, isc_bufferlist_t *buflist, -+isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist, - isc_task_t *task, isc_taskaction_t action, const void *arg, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) - { -+ return (isc__socket_sendtov2(sock, buflist, task, action, arg, address, -+ pktinfo, 0)); -+} -+ -+ISC_SOCKETFUNC_SCOPE isc_result_t -+isc__socket_sendtov2(isc_socket_t *sock0, isc_bufferlist_t *buflist, -+ isc_task_t *task, isc_taskaction_t action, const void *arg, -+ isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, -+ unsigned int flags) -+{ - isc__socket_t *sock = (isc__socket_t *)sock0; - isc_socketevent_t *dev; - isc__socketmgr_t *manager; -@@ -4837,7 +4852,7 @@ isc__socket_sendtov(isc_socket_t *sock0, - buffer = ISC_LIST_HEAD(*buflist); - } - -- return (socket_send(sock, dev, task, address, pktinfo, 0)); -+ return (socket_send(sock, dev, task, address, pktinfo, flags)); - } - - ISC_SOCKETFUNC_SCOPE isc_result_t diff --git a/bind99-ISC-Bugs-35073.patch b/bind99-ISC-Bugs-35073.patch deleted file mode 100644 index c8be3ed..0000000 --- a/bind99-ISC-Bugs-35073.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c -index 486c102..dc12a85 100644 ---- a/bin/nsupdate/nsupdate.c -+++ b/bin/nsupdate/nsupdate.c -@@ -1566,16 +1566,20 @@ evaluate_realm(char *cmdline) { - #ifdef GSSAPI - char *word; - char buf[1024]; -+ int n; - -- word = nsu_strsep(&cmdline, " \t\r\n"); -- if (word == NULL || *word == 0) { -- if (realm != NULL) -- isc_mem_free(mctx, realm); -+ if (realm != NULL) { -+ isc_mem_free(mctx, realm); - realm = NULL; -- return (STATUS_MORE); - } - -- snprintf(buf, sizeof(buf), "@%s", word); -+ word = nsu_strsep(&cmdline, " \t\r\n"); -+ if (word == NULL || *word == 0) -+ return (STATUS_MORE); -+ -+ n = snprintf(buf, sizeof(buf), "@%s", word); -+ if (n < 0 || (size_t)n >= sizeof(buf)) -+ fatal("realm is too long"); - realm = isc_mem_strdup(mctx, buf); - if (realm == NULL) - fatal("out of memory"); diff --git a/sources b/sources index 120c42b..310e200 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -f69757adc86776daed8e5acb0ee7c0ca bind-9.9.4.tar.gz +850e8f02cb5db1253114bca560bf3fe7 bind-9.9.5b1.tar.gz e4315fdea56983570d3a33702e925088 config-12.tar.bz2