[arch-commits] Commit in bind/trunk (PKGBUILD fix-FS#60286.patch)

Sébastien Luttringer seblu at archlinux.org
Sat Oct 20 21:59:58 UTC 2018


    Date: Saturday, October 20, 2018 @ 21:59:58
  Author: seblu
Revision: 336920

upgpkg: bind 9.13.3-2

- implement FS#58741
- implement FS#59357
- fix FS#60286

Added:
  bind/trunk/fix-FS#60286.patch
Modified:
  bind/trunk/PKGBUILD

--------------------+
 PKGBUILD           |   18 +++----
 fix-FS#60286.patch |  129 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 139 insertions(+), 8 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-10-20 21:48:59 UTC (rev 336919)
+++ PKGBUILD	2018-10-20 21:59:58 UTC (rev 336920)
@@ -7,13 +7,13 @@
 pkgname=(bind bind-tools)
 _pkgver=9.13.3
 pkgver=${_pkgver//-/.}
-pkgrel=1
+pkgrel=2
 url='https://www.isc.org/software/bind/'
 license=('MPL2')
 arch=('x86_64')
 options=('!emptydirs')
 makedepends=('libcap' 'libxml2' 'zlib' 'krb5' 'e2fsprogs' 'openssl' 'readline'
- 'idnkit' 'geoip' 'dnssec-anchors' 'python' 'json-c' 'python-ply' 'libseccomp')
+ 'libidn2' 'geoip' 'dnssec-anchors' 'python' 'json-c' 'python-ply' 'libseccomp')
 validpgpkeys=('2B48A38AE1CF9886435F89EE45AC7857189CDBC5'
               'ADBE9446286C794905F1E0756FA6EBC9911A4C02' #ISC, Inc)
               'BE0E9748B718253A28BB89FFF1B11BF05CF02E57' #Internet Systems Consortium, Inc.
@@ -26,7 +26,8 @@
         'localhost.zone'
         'localhost.ip6.zone'
         '127.0.0.zone'
-        'empty.zone')
+        'empty.zone'
+        'fix-FS#60286.patch')
 sha1sums=('eed41fd32887bd163935fe14b94afad4a8b287c2'
           'SKIP'
           'c5a2bcd9b0f009ae71f3a03fbdbe012196962a11'
@@ -36,7 +37,8 @@
           '6704303a6ed431a29b1d8fe7b12decd4d1f2f50f'
           '52da8f1c0247a11b16daa4e03d920e8f09315cbe'
           '9c33726088342207ad06d33b2c13408290a0c8ad'
-          '4f4457b310cbbeadca2272eced062a9c2b2b42fe')
+          '4f4457b310cbbeadca2272eced062a9c2b2b42fe'
+          '90b8362f8be53a025e204ddf5f202fc872846f1e')
 
 prepare() {
   msg2 'Getting a fresh version of root DNS'
@@ -93,7 +95,7 @@
   cd "bind-$_pkgver"
   install -dm755 "$pkgdir/usr/share/licenses/$pkgname/"
   install -Dm644 LICENSE COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/"
-  for _d in bin/{check,confgen,named,rndc}; do
+  for _d in bin/{check,named,rndc}; do
     (cd "$_d" && make DESTDIR="$pkgdir" install)
   done
 
@@ -115,8 +117,8 @@
 package_bind-tools() {
   pkgdesc='The ISC DNS tools'
   depends=('glibc' 'libcap' 'libseccomp' 'libxml2' 'zlib' 'krb5' 'e2fsprogs'
-           'openssl' 'readline' 'geoip' 'idnkit' 'dnssec-anchors' 'json-c')
-  optdepends=('python: for python scripts')
+           'openssl' 'readline' 'geoip' 'libidn2' 'dnssec-anchors' 'json-c'
+           'python')
   conflicts=('dnsutils')
   replaces=('dnsutils' 'host')
   provides=("dnsutils=$pkgver")
@@ -125,7 +127,7 @@
   install -Dm644 COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
   make DESTDIR="$pkgdir" SUBDIRS="" install
   (cd lib && make DESTDIR="$pkgdir" install)
-  for _d in bin/{dig,dnssec,delv,nsupdate,python,tools}; do
+  for _d in bin/{confgen,dig,dnssec,delv,nsupdate,python,tools}; do
     (cd "$_d" && make DESTDIR="$pkgdir" install)
   done
 }

Added: fix-FS#60286.patch
===================================================================
--- fix-FS#60286.patch	                        (rev 0)
+++ fix-FS#60286.patch	2018-10-20 21:59:58 UTC (rev 336920)
@@ -0,0 +1,129 @@
+diff --git a/lib/irs/getaddrinfo.c b/lib/irs/getaddrinfo.c
+index 1b2df6d71c9a3df0e75c1f336833a136e0d6a06c..d5481c7afa605880b7c9e5ca17815d5f80e6ea5a 100644
+--- a/lib/irs/getaddrinfo.c
++++ b/lib/irs/getaddrinfo.c
+@@ -181,6 +181,47 @@ static void _freeaddrinfo(struct addrinfo *ai);
+ #define FOUND_IPV6	0x2
+ #define FOUND_MAX	2
+ 
++/*%
++ * Try converting the scope identifier in 'src' to a network interface index.
++ * Upon success, return true and store the resulting index in 'dst'.  Upon
++ * failure, return false.
++ */
++static bool
++parse_scopeid(const char *src, uint32_t *dst) {
++	uint32_t scopeid = 0;
++
++	REQUIRE(src != NULL);
++	REQUIRE(dst != NULL);
++
++#ifdef HAVE_IF_NAMETOINDEX
++	/*
++	 * Try using if_nametoindex() first if it is available.  As it does not
++	 * handle numeric scopes, we do not simply return if it fails.
++	 */
++	scopeid = (uint32_t)if_nametoindex(src);
++#endif
++
++	/*
++	 * Fall back to numeric scope processing if if_nametoindex() either
++	 * fails or is unavailable.
++	 */
++	if (scopeid == 0) {
++		char *endptr = NULL;
++		scopeid = (uint32_t)strtoul(src, &endptr, 10);
++		/*
++		 * The scope identifier must not be empty and no trailing
++		 * characters are allowed after it.
++		 */
++		if (src == endptr || endptr == NULL || *endptr != '\0') {
++			return (false);
++		}
++	}
++
++	*dst = scopeid;
++
++	return (true);
++}
++
+ #define ISC_AI_MASK (AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST)
+ /*%
+  * Get a list of IP addresses and port numbers for host hostname and
+@@ -365,39 +406,24 @@ getaddrinfo(const char *hostname, const char *servname,
+ 		char abuf[sizeof(struct in6_addr)];
+ 		char nbuf[NI_MAXHOST];
+ 		int addrsize, addroff;
+-#ifdef IRS_HAVE_SIN6_SCOPE_ID
+-		char *p, *ep;
+ 		char ntmp[NI_MAXHOST];
+-		uint32_t scopeid;
+-#endif
++		uint32_t scopeid = 0;
+ 
+-#ifdef IRS_HAVE_SIN6_SCOPE_ID
+ 		/*
+ 		 * Scope identifier portion.
+ 		 */
+ 		ntmp[0] = '\0';
+ 		if (strchr(hostname, '%') != NULL) {
++			char *p;
+ 			strlcpy(ntmp, hostname, sizeof(ntmp));
+ 			p = strchr(ntmp, '%');
+-			ep = NULL;
+-
+-			/*
+-			 * Vendors may want to support non-numeric
+-			 * scopeid around here.
+-			 */
+ 
+-			if (p != NULL)
+-				scopeid = (uint32_t)strtoul(p + 1,
+-								&ep, 10);
+-			if (p != NULL && ep != NULL && ep[0] == '\0')
++			if (p != NULL && parse_scopeid(p + 1, &scopeid)) {
+ 				*p = '\0';
+-			else {
++			} else {
+ 				ntmp[0] = '\0';
+-				scopeid = 0;
+ 			}
+-		} else
+-			scopeid = 0;
+-#endif
++		}
+ 
+ 		if (inet_pton(AF_INET, hostname, (struct in_addr *)abuf)
+ 		    == 1) {
+@@ -415,7 +441,6 @@ getaddrinfo(const char *hostname, const char *servname,
+ 			addroff = offsetof(struct sockaddr_in, sin_addr);
+ 			family = AF_INET;
+ 			goto common;
+-#ifdef IRS_HAVE_SIN6_SCOPE_ID
+ 		} else if (ntmp[0] != '\0' &&
+ 			   inet_pton(AF_INET6, ntmp, abuf) == 1) {
+ 			if (family && family != AF_INET6)
+@@ -424,7 +449,6 @@ getaddrinfo(const char *hostname, const char *servname,
+ 			addroff = offsetof(struct sockaddr_in6, sin6_addr);
+ 			family = AF_INET6;
+ 			goto common;
+-#endif
+ 		} else if (inet_pton(AF_INET6, hostname, abuf) == 1) {
+ 			if (family != 0 && family != AF_INET6)
+ 				return (EAI_NONAME);
+@@ -444,12 +468,10 @@ getaddrinfo(const char *hostname, const char *servname,
+ 			ai->ai_socktype = socktype;
+ 			SIN(ai->ai_addr)->sin_port = port;
+ 			memmove((char *)ai->ai_addr + addroff, abuf, addrsize);
++			if (ai->ai_family == AF_INET6) {
++				SIN6(ai->ai_addr)->sin6_scope_id = scopeid;
++			}
+ 			if ((flags & AI_CANONNAME) != 0) {
+-#ifdef IRS_HAVE_SIN6_SCOPE_ID
+-				if (ai->ai_family == AF_INET6)
+-					SIN6(ai->ai_addr)->sin6_scope_id =
+-						scopeid;
+-#endif
+ 				if (getnameinfo(ai->ai_addr,
+ 						(socklen_t)ai->ai_addrlen,
+ 						nbuf, sizeof(nbuf), NULL, 0,



More information about the arch-commits mailing list