[Pkg-gnupg-commit] [gnupg2] 01/05: pull bugfixes from upstream

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed Jun 29 21:21:36 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch experimental
in repository gnupg2.

commit 7acbc1aaf2e952df8e6444df5dcdb91150a79d80
Author: Daniel Kahn Gillmor <dkg at fifthhorseman.net>
Date:   Tue Jun 28 12:57:36 2016 -0400

    pull bugfixes from upstream
---
 ...n-Fix-copying-data-from-the-spawned-child.patch | 70 ++++++++++++++++++
 debian/patches/0005-g10-Fix-list-packets.patch     | 83 ++++++++++++++++++++++
 ...gp-Fake-the-system-time-for-the-tofu-test.patch | 34 +++++++++
 .../0007-scd-Make-option-homedir-work.patch        | 27 +++++++
 ...eset-nonnull_nad-to-zero-for-VENDOR_GEMPC.patch | 32 +++++++++
 ...009-g10-Fix-regression-of-card-edit-fetch.patch | 53 ++++++++++++++
 debian/patches/series                              |  6 ++
 7 files changed, 305 insertions(+)

diff --git a/debian/patches/0004-common-Fix-copying-data-from-the-spawned-child.patch b/debian/patches/0004-common-Fix-copying-data-from-the-spawned-child.patch
new file mode 100644
index 0000000..40c0d70
--- /dev/null
+++ b/debian/patches/0004-common-Fix-copying-data-from-the-spawned-child.patch
@@ -0,0 +1,70 @@
+From: Justus Winter <justus at g10code.com>
+Date: Tue, 28 Jun 2016 14:38:35 +0200
+Subject: common: Fix copying data from the spawned child.
+
+Fixes intermittent gpgtar failures.
+
+* common/exectool.c (copy_buffer_do_copy): Initialize 'nwritten'.
+(gnupg_exec_tool_stream): Loop until all data is copied.
+
+Signed-off-by: Justus Winter <justus at g10code.com>
+---
+ common/exectool.c | 25 +++++++++++++++----------
+ 1 file changed, 15 insertions(+), 10 deletions(-)
+
+diff --git a/common/exectool.c b/common/exectool.c
+index 897450e..b43e7cb 100644
+--- a/common/exectool.c
++++ b/common/exectool.c
+@@ -224,7 +224,7 @@ static gpg_error_t
+ copy_buffer_do_copy (struct copy_buffer *c, estream_t source, estream_t sink)
+ {
+   gpg_error_t err;
+-  size_t nwritten;
++  size_t nwritten = 0;
+ 
+   if (c->nread == 0)
+     {
+@@ -390,7 +390,7 @@ gnupg_exec_tool_stream (const char *pgmname, const char *argv[],
+   /* Now read as long as we have something to poll.  We continue
+      reading even after EOF or error on stdout so that we get the
+      other error messages or remaining outut.  */
+-  while (!fds[1].ignore && !fds[2].ignore)
++  while (! (fds[1].ignore && fds[2].ignore))
+     {
+       count = es_poll (fds, DIM(fds), -1);
+       if (count == -1)
+@@ -465,20 +465,25 @@ gnupg_exec_tool_stream (const char *pgmname, const char *argv[],
+                          pgmname, gpg_strerror (err));
+               goto leave;
+             }
++
++          if (es_feof (fds[1].stream))
++            {
++              err = copy_buffer_flush (&cpbuf_out, output);
++              if (err)
++                {
++                  log_error ("error reading data from '%s': %s\n",
++                             pgmname, gpg_strerror (err));
++                  goto leave;
++                }
++
++              fds[1].ignore = 1; /* ready.  */
++            }
+         }
+ 
+       if (fds[2].got_read)
+         read_and_log_stderr (&fderrstate, fds + 2);
+     }
+ 
+-  err = copy_buffer_flush (&cpbuf_out, output);
+-  if (err)
+-    {
+-      log_error ("error reading data from '%s': %s\n",
+-                 pgmname, gpg_strerror (err));
+-      goto leave;
+-    }
+-
+   read_and_log_stderr (&fderrstate, NULL); /* Flush.  */
+   es_fclose (infp); infp = NULL;
+   es_fclose (extrafp); extrafp = NULL;
diff --git a/debian/patches/0005-g10-Fix-list-packets.patch b/debian/patches/0005-g10-Fix-list-packets.patch
new file mode 100644
index 0000000..14d8e1c
--- /dev/null
+++ b/debian/patches/0005-g10-Fix-list-packets.patch
@@ -0,0 +1,83 @@
+From: NIIBE Yutaka <gniibe at fsij.org>
+Date: Tue, 28 Jun 2016 15:56:48 +0900
+Subject: g10: Fix --list-packets.
+
+* g10/gpg.c (main): Call set_packet_list_mode after assignment of
+opt.list_packets.
+* g10/mainproc.c (do_proc_packets): Don't stop processing with
+--list-packets as the comment says.
+* g10/options.h (list_packets): Fix the comment.
+* g10/parse-packet.c: Fix the condition for opt.list_packets.
+
+--
+
+Debian-bug-id: 828109
+Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>
+---
+ g10/gpg.c          | 3 +--
+ g10/mainproc.c     | 2 +-
+ g10/options.h      | 2 +-
+ g10/parse-packet.c | 2 +-
+ 4 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/g10/gpg.c b/g10/gpg.c
+index 1f2d416..73b7604 100644
+--- a/g10/gpg.c
++++ b/g10/gpg.c
+@@ -4648,7 +4648,6 @@ main (int argc, char **argv)
+ 	break;
+ 
+       case aListPackets:
+-	opt.list_packets=2;
+       default:
+ 	if( argc > 1 )
+ 	    wrong_args(_("[filename]"));
+@@ -4677,8 +4676,8 @@ main (int argc, char **argv)
+ 		}
+ 	    }
+ 	    if( cmd == aListPackets ) {
+-		set_packet_list_mode(1);
+ 		opt.list_packets=1;
++		set_packet_list_mode(1);
+ 	    }
+ 	    rc = proc_packets (ctrl, NULL, a );
+ 	    if( rc )
+diff --git a/g10/mainproc.c b/g10/mainproc.c
+index 453d1b0..80051c8 100644
+--- a/g10/mainproc.c
++++ b/g10/mainproc.c
+@@ -1328,7 +1328,7 @@ do_proc_packets (ctrl_t ctrl, CTX c, iobuf_t a)
+           /* Stop processing when an invalid packet has been encountered
+            * but don't do so when we are doing a --list-packets.  */
+           if (gpg_err_code (rc) == GPG_ERR_INV_PACKET
+-              && opt.list_packets != 2 )
++              && opt.list_packets == 0)
+             break;
+           continue;
+ 	}
+diff --git a/g10/options.h b/g10/options.h
+index 0a87b90..bc9e57a 100644
+--- a/g10/options.h
++++ b/g10/options.h
+@@ -80,7 +80,7 @@ struct
+   int print_pka_records;
+   int print_dane_records;
+   int no_armor;
+-  int list_packets; /* list-packets mode: 1=normal, 2=invoked by command*/
++  int list_packets; /* Option --list-packets active.  */
+   int def_cipher_algo;
+   int force_mdc;
+   int disable_mdc;
+diff --git a/g10/parse-packet.c b/g10/parse-packet.c
+index e02238b..bd4fcbd 100644
+--- a/g10/parse-packet.c
++++ b/g10/parse-packet.c
+@@ -211,7 +211,7 @@ set_packet_list_mode (int mode)
+      enable the list mode only with a special option. */
+   if (!listfp)
+     {
+-      if (opt.list_packets == 2)
++      if (opt.list_packets)
+         {
+           listfp = es_stdout;
+           if (opt.verbose)
diff --git a/debian/patches/0006-tests-openpgp-Fake-the-system-time-for-the-tofu-test.patch b/debian/patches/0006-tests-openpgp-Fake-the-system-time-for-the-tofu-test.patch
new file mode 100644
index 0000000..de1b2d7
--- /dev/null
+++ b/debian/patches/0006-tests-openpgp-Fake-the-system-time-for-the-tofu-test.patch
@@ -0,0 +1,34 @@
+From: Justus Winter <justus at g10code.com>
+Date: Thu, 23 Jun 2016 17:24:23 +0200
+Subject: tests/openpgp: Fake the system time for the tofu test.
+
+The keys in the tofu test are set to expire on 2016-09-17.  Fake the
+system time for this test.
+
+This commit includes changes to the old test as well, for those who
+need to backport it.
+
+* tests/openpgp/gpg-agent.conf.tmpl: Drop trailing newlines.
+* tests/openpgp/tofu.scm: Fake system time.
+* tests/openpgp/tofu.test: Likewise.
+
+GnuPG-bug-id: 2393
+Signed-off-by: Justus Winter <justus at g10code.com>
+---
+ tests/openpgp/tofu.test | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/tests/openpgp/tofu.test b/tests/openpgp/tofu.test
+index 18c1756..0d34af4 100755
+--- a/tests/openpgp/tofu.test
++++ b/tests/openpgp/tofu.test
+@@ -4,6 +4,9 @@
+ 
+ # set -x
+ 
++# Redefine GPG with a fixed time.
++GPG="$GPG --faked-system-time=1466684990"
++
+ KEYS="2183839A BC15C85A EE37CF96"
+ 
+ # Make sure $srcdir is set.
diff --git a/debian/patches/0007-scd-Make-option-homedir-work.patch b/debian/patches/0007-scd-Make-option-homedir-work.patch
new file mode 100644
index 0000000..113c6a4
--- /dev/null
+++ b/debian/patches/0007-scd-Make-option-homedir-work.patch
@@ -0,0 +1,27 @@
+From: Werner Koch <wk at gnupg.org>
+Date: Fri, 17 Jun 2016 08:36:07 +0200
+Subject: scd: Make option --homedir work.
+
+* scd/scdaemon.c (opts): Add --homedir.
+--
+
+Without that entry the homedir setting won't work.
+
+GnuPG-bug-id: 2386
+Signed-off-by: Werner Koch <wk at gnupg.org>
+---
+ scd/scdaemon.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/scd/scdaemon.c b/scd/scdaemon.c
+index 9c11cad..7dbb9c7 100644
+--- a/scd/scdaemon.c
++++ b/scd/scdaemon.c
+@@ -156,6 +156,7 @@ static ARGPARSE_OPTS opts[] = {
+   ARGPARSE_s_s (oDisableApplication, "disable-application", "@"),
+   ARGPARSE_s_n (oEnablePinpadVarlen, "enable-pinpad-varlen",
+                 N_("use variable length input for pinpad")),
++  ARGPARSE_s_s (oHomedir,    "homedir",      "@"),
+ 
+   ARGPARSE_end ()
+ };
diff --git a/debian/patches/0008-scd-Reset-nonnull_nad-to-zero-for-VENDOR_GEMPC.patch b/debian/patches/0008-scd-Reset-nonnull_nad-to-zero-for-VENDOR_GEMPC.patch
new file mode 100644
index 0000000..7d1eed0
--- /dev/null
+++ b/debian/patches/0008-scd-Reset-nonnull_nad-to-zero-for-VENDOR_GEMPC.patch
@@ -0,0 +1,32 @@
+From: Niibe Yutaka <gniibe at fsij.org>
+Date: Sun, 19 Jun 2016 11:24:50 +0900
+Subject: scd: Reset nonnull_nad to zero for VENDOR_GEMPC.
+
+* (parse_ccid_descriptor): nonnull_nad = 0 for all GEMPC device.
+
+--
+
+We can't use the driver for 08E6:3438, while it works well under PC/SC
+service.  I found that the library of ccid always uses the node
+address = ZERO for all transactions.  So, we extend the same handling
+for not only GEMPC_CT30, but also for all its devices.
+
+Debian-bug-id: 814584
+Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>
+---
+ scd/ccid-driver.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scd/ccid-driver.c b/scd/ccid-driver.c
+index 985404f..7a093f6 100644
+--- a/scd/ccid-driver.c
++++ b/scd/ccid-driver.c
+@@ -975,7 +975,7 @@ parse_ccid_descriptor (ccid_driver_t handle,
+       handle->max_ifsd = 48;
+     }
+ 
+-  if (handle->id_vendor == VENDOR_GEMPC && handle->id_product == GEMPC_CT30)
++  if (handle->id_vendor == VENDOR_GEMPC)
+     {
+       DEBUGOUT ("enabling product quirk: disable non-null NAD\n");
+       handle->nonnull_nad = 0;
diff --git a/debian/patches/0009-g10-Fix-regression-of-card-edit-fetch.patch b/debian/patches/0009-g10-Fix-regression-of-card-edit-fetch.patch
new file mode 100644
index 0000000..233d198
--- /dev/null
+++ b/debian/patches/0009-g10-Fix-regression-of-card-edit-fetch.patch
@@ -0,0 +1,53 @@
+From: NIIBE Yutaka <gniibe at fsij.org>
+Date: Thu, 23 Jun 2016 12:12:43 +0900
+Subject: g10: Fix regression of card-edit/fetch.
+
+* g10/card-util.c (fetch_url): Call keyserver_fetch instead of
+keyserver_import_fprint.
+
+--
+Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>
+---
+ g10/card-util.c | 24 +++++++-----------------
+ 1 file changed, 7 insertions(+), 17 deletions(-)
+
+diff --git a/g10/card-util.c b/g10/card-util.c
+index be1a593..2cb44f9 100644
+--- a/g10/card-util.c
++++ b/g10/card-util.c
+@@ -733,28 +733,18 @@ fetch_url (ctrl_t ctrl)
+     log_error("error retrieving URL from card: %s\n",gpg_strerror(rc));
+   else
+     {
+-      struct keyserver_spec *spec=NULL;
+-
+       rc=agent_scd_getattr("KEY-FPR",&info);
+       if(rc)
+ 	log_error("error retrieving key fingerprint from card: %s\n",
+ 		  gpg_strerror(rc));
+       else if (info.pubkey_url && *info.pubkey_url)
+-	{
+-	  spec = parse_keyserver_uri (info.pubkey_url, 1);
+-	  if(spec && info.fpr1valid)
+-	    {
+-	      /* This is not perfectly right.  Currently, all card
+-		 fingerprints are 20 digits, but what about
+-		 fingerprints for a future v5 key?  We should get the
+-		 length from somewhere lower in the code.  In any
+-		 event, the fpr/keyid is not meaningful for straight
+-		 HTTP fetches, but using it allows the card to point
+-		 to HKP and LDAP servers as well. */
+-	      rc = keyserver_import_fprint (ctrl, info.fpr1, 20, spec);
+-	      free_keyserver_spec(spec);
+-	    }
+-	}
++        {
++          strlist_t sl = NULL;
++
++          add_to_strlist (&sl, info.pubkey_url);
++          rc = keyserver_fetch (ctrl, sl);
++          free_strlist (sl);
++        }
+       else if (info.fpr1valid)
+ 	{
+           rc = keyserver_import_fprint (ctrl, info.fpr1, 20, opt.keyserver);
diff --git a/debian/patches/series b/debian/patches/series
index 36806e3..48e6e4a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,9 @@
 0001-avoid-beta-warning.patch
 0002-Avoid-simple-memory-dumps-via-ptrace.patch
 0003-g10-Fix-another-race-condition-for-trustdb-access.patch
+0004-common-Fix-copying-data-from-the-spawned-child.patch
+0005-g10-Fix-list-packets.patch
+0006-tests-openpgp-Fake-the-system-time-for-the-tofu-test.patch
+0007-scd-Make-option-homedir-work.patch
+0008-scd-Reset-nonnull_nad-to-zero-for-VENDOR_GEMPC.patch
+0009-g10-Fix-regression-of-card-edit-fetch.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git



More information about the Pkg-gnupg-commit mailing list