Revision: 92526 https://trac.macports.org/changeset/92526 Author: dluke@macports.org Date: 2012-04-30 13:31:39 -0700 (Mon, 30 Apr 2012) Log Message: ----------- bind9: add isc patch to prevent sefgault in resolver.c Modified Paths: -------------- trunk/dports/net/bind9/Portfile Added Paths: ----------- trunk/dports/net/bind9/files/patch-lib-dns-resolver.c.diff Modified: trunk/dports/net/bind9/Portfile =================================================================== --- trunk/dports/net/bind9/Portfile 2012-04-30 20:29:22 UTC (rev 92525) +++ trunk/dports/net/bind9/Portfile 2012-04-30 20:31:39 UTC (rev 92526) @@ -4,6 +4,7 @@ name bind9 version 9.9.0 +revision 1 categories net maintainers geeklair.net:dluke @@ -28,6 +29,9 @@ distname bind-${version} master_sites isc:${name}/${version} +# Patch for segfault see https://kb.isc.org/article/AA-00664 +patchfiles patch-lib-dns-resolver.c.diff + checksums md5 9281d0b04f711d28153ba1ab04a54026 \ sha1 6be77c75c8649088b0ae7124d819b5f412bb0094 \ rmd160 5fda36a3aa84062f7936978cb540e8ad3f1c4e08 Added: trunk/dports/net/bind9/files/patch-lib-dns-resolver.c.diff =================================================================== --- trunk/dports/net/bind9/files/patch-lib-dns-resolver.c.diff (rev 0) +++ trunk/dports/net/bind9/files/patch-lib-dns-resolver.c.diff 2012-04-30 20:31:39 UTC (rev 92526) @@ -0,0 +1,32 @@ +diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c +index c14af94..097c9fb 100644 +--- lib/dns/resolver.c ++++ lib/dns/resolver.c +@@ -2166,7 +2166,6 @@ fctx_finddone(isc_task_t *task, isc_event_t *event) { + isc_boolean_t want_try = ISC_FALSE; + isc_boolean_t want_done = ISC_FALSE; + isc_boolean_t bucket_empty = ISC_FALSE; +- isc_boolean_t destroy = ISC_FALSE; + unsigned int bucketnum; + + find = event->ev_sender; +@@ -2205,17 +2204,12 @@ fctx_finddone(isc_task_t *task, isc_event_t *event) { + } + } else if (SHUTTINGDOWN(fctx) && fctx->pending == 0 && + fctx->nqueries == 0 && ISC_LIST_EMPTY(fctx->validators)) { +- /* +- * Note that we had to wait until we had the lock before +- * looking at fctx->references. +- */ ++ + if (fctx->references == 0) +- destroy = ISC_TRUE; ++ bucket_empty = fctx_destroy(fctx); + } + UNLOCK(&res->buckets[bucketnum].lock); + +- if (destroy) +- bucket_empty = fctx_destroy(fctx); + isc_event_free(&event); + dns_adb_destroyfind(&find); +