Date: Thursday, January 19, 2017 @ 09:17:44 Author: bisson Revision: 286967
switch to gnupg's own libdns, add fix for unhandled negation Added: gnupg/trunk/negation.patch gnupg/trunk/suffix.patch Modified: gnupg/trunk/PKGBUILD Deleted: gnupg/trunk/libdns.patch ----------------+ PKGBUILD | 12 +++++--- libdns.patch | 74 ------------------------------------------------------- negation.patch | 29 +++++++++++++++++++++ suffix.patch | 46 ++++++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 79 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-01-19 09:15:58 UTC (rev 286966) +++ PKGBUILD 2017-01-19 09:17:44 UTC (rev 286967) @@ -6,7 +6,7 @@ pkgname=gnupg pkgver=2.1.17 -pkgrel=3 +pkgrel=4 pkgdesc='Complete and free implementation of the OpenPGP standard' url='http://www.gnupg.org/' license=('GPL') @@ -21,9 +21,11 @@ '031EC2536E580D8EA286A9F22071B08A33BD3F06' 'D238EA65D64C67ED4C3073F28A861B1C7EFD60D9') source=("https://gnupg.org/ftp/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2"{,.sig} - 'libdns.patch') + 'negation.patch' + 'suffix.patch') sha1sums=('d83ab893faab35f37ace772ca29b939e6a5aa6a7' 'SKIP' - '4217441481d2f89783d39f50eeda7d6984a01e6d') + '0ad1a4cb440f84427f19c7016070d04b2faeae89' + '477569b1bb0bb9b1d839970bd143f3cbaa47b376') install=install @@ -34,7 +36,8 @@ prepare() { cd "${srcdir}/${pkgname}-${pkgver}" sed '/noinst_SCRIPTS = gpg-zip/c sbin_SCRIPTS += gpg-zip' -i tools/Makefile.in - patch -p1 -i ../libdns.patch + patch -p1 -i ../negation.patch + patch -p1 -i ../suffix.patch } build() { @@ -46,7 +49,6 @@ --libexecdir=/usr/lib/gnupg \ --enable-maintainer-mode \ --enable-symcryptrun \ - --disable-libdns # FS#52234 make } Deleted: libdns.patch =================================================================== --- libdns.patch 2017-01-19 09:15:58 UTC (rev 286966) +++ libdns.patch 2017-01-19 09:17:44 UTC (rev 286967) @@ -1,74 +0,0 @@ -From: NIIBE Yutaka <[email protected]> -Date: Fri, 23 Dec 2016 07:05:01 +0000 (+0900) -Subject: dirmngr: Fix for --disable-libdns usage. -X-Git-Url: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commitdiff_plain;h=d26c51825e2255fe58305cbc1cd74fa43f80d93e - -dirmngr: Fix for --disable-libdns usage. - -* dirmngr/dns-stuff.c (enable_recursive_resolver, set_dns_nameserver) -(reload_dns_stuff): Conditionalize with USE_LIBDNS. -(get_h_errno_as_gpg_error): Map HOST_NOT_FOUND to GPG_ERR_NO_NAME. - --- - -get_dns_srv assumes error code of GPG_ERR_NO_NAME when no SRV record -available. - -Signed-off-by: NIIBE Yutaka <[email protected]> -GnuPG-bug-id: 2889 ---- - -diff --git a/dirmngr/dns-stuff.c b/dirmngr/dns-stuff.c -index 491fcce..a31b073 100644 ---- a/dirmngr/dns-stuff.c -+++ b/dirmngr/dns-stuff.c -@@ -181,7 +181,9 @@ void - enable_recursive_resolver (int yes) - { - recursive_resolver = yes; -+#ifdef USE_LIBDNS - libdns_reinit_pending = 1; -+#endif - } - - -@@ -251,8 +253,10 @@ set_dns_nameserver (const char *ipaddr) - strncpy (tor_nameserver, ipaddr? ipaddr : DEFAULT_NAMESERVER, - sizeof tor_nameserver -1); - tor_nameserver[sizeof tor_nameserver -1] = 0; -+#ifdef USE_LIBDNS - libdns_reinit_pending = 1; - libdns_tor_port = 0; /* Start again with the default port. */ -+#endif - } - - -@@ -278,7 +282,7 @@ get_h_errno_as_gpg_error (void) - - switch (h_errno) - { -- case HOST_NOT_FOUND: ec = GPG_ERR_UNKNOWN_HOST; break; -+ case HOST_NOT_FOUND: ec = GPG_ERR_NO_NAME; break; - case TRY_AGAIN: ec = GPG_ERR_TRY_LATER; break; - case NO_RECOVERY: ec = GPG_ERR_SERVER_FAILED; break; - case NO_DATA: ec = GPG_ERR_NO_DATA; break; -@@ -534,15 +538,17 @@ libdns_deinit (void) - void - reload_dns_stuff (int force) - { -+#ifdef USE_LIBDNS - if (force) - { --#ifdef USE_LIBDNS - libdns_deinit (); --#endif - libdns_reinit_pending = 0; - } - else - libdns_reinit_pending = 1; -+#else -+ (void)force; -+#endif - } - - Added: negation.patch =================================================================== --- negation.patch (rev 0) +++ negation.patch 2017-01-19 09:17:44 UTC (rev 286967) @@ -0,0 +1,29 @@ +diff -Naur old/dirmngr/dns.c new/dirmngr/dns.c +--- old/dirmngr/dns.c 2016-12-20 00:19:05.000000000 -1000 ++++ new/dirmngr/dns.c 2017-01-18 23:02:50.209471082 -1000 +@@ -6028,7 +6028,7 @@ + char lookup[sizeof resconf->lookup] = "", *lp; + struct dns_anyconf cf; + size_t i; +- int error; ++ int error, ret; + + while (!feof(fp) && !ferror(fp)) { + dns_anyconf_reset(&cf); +@@ -6054,7 +6054,15 @@ + if ('[' == dns_anyconf_peek(fp)) { + dns_anyconf_skip("[ \t", fp); + +- while (dns_anyconf_scan(&cf, "%w_", fp, &error)) { ++ for (;;) { ++ if ('!' == dns_anyconf_peek(fp)) { ++ dns_anyconf_skip("! \t", fp); ++ /* FIXME: negating statuses; currently not implemented */ ++ dns_anyconf_skip("^#;]\n", fp); /* skip to end of criteria */ ++ break; ++ } ++ ++ if (!dns_anyconf_scan(&cf, "%w_", fp, &error)) break; + dns_anyconf_skip("= \t", fp); + if (!dns_anyconf_scan(&cf, "%w_", fp, &error)) { + dns_anyconf_pop(&cf); /* discard status */ Added: suffix.patch =================================================================== --- suffix.patch (rev 0) +++ suffix.patch 2017-01-19 09:17:44 UTC (rev 286967) @@ -0,0 +1,46 @@ +From b200e636ab20d2aa93d9f71f3789db5a04af0a56 Mon Sep 17 00:00:00 2001 +From: Werner Koch <[email protected]> +Date: Mon, 2 Jan 2017 10:00:33 +0100 +Subject: [PATCH] dirmngr: Strip root zone suffix from libdns cname results. + +* dirmngr/dns-stuff.c (resolve_name_libdns): Strip trailing dot. +(get_dns_cname_libdns): Ditto. +-- + +Signed-off-by: Werner Koch <[email protected]> +--- + dirmngr/dns-stuff.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/dirmngr/dns-stuff.c b/dirmngr/dns-stuff.c +index a31b073..f2e1df9 100644 +--- a/dirmngr/dns-stuff.c ++++ b/dirmngr/dns-stuff.c +@@ -732,6 +732,10 @@ resolve_name_libdns (const char *name, unsigned short port, + err = gpg_error_from_syserror (); + goto leave; + } ++ /* Libdns appends the root zone part which is problematic ++ * for most other functions - strip it. */ ++ if (**r_canonname && (*r_canonname)[strlen (*r_canonname)-1] == '.') ++ (*r_canonname)[strlen (*r_canonname)-1] = 0; + } + + dai = xtrymalloc (sizeof *dai + ent->ai_addrlen -1); +@@ -1899,6 +1903,13 @@ get_dns_cname_libdns (const char *name, char **r_cname) + *r_cname = xtrystrdup (cname.host); + if (!*r_cname) + err = gpg_error_from_syserror (); ++ else ++ { ++ /* Libdns appends the root zone part which is problematic ++ * for most other functions - strip it. */ ++ if (**r_cname && (*r_cname)[strlen (*r_cname)-1] == '.') ++ (*r_cname)[strlen (*r_cname)-1] = 0; ++ } + + leave: + dns_free (ans); +-- +2.8.0.rc3 +
