[Pkg-gnupg-commit] [gnupg2] 01/06: more patches from upstream (Closes: #854829)

Daniel Kahn Gillmor dkg at fifthhorseman.net
Tue Mar 21 16:47:05 UTC 2017


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

dkg pushed a commit to branch experimental
in repository gnupg2.

commit c54e2a060369a7e7d8c75b90e7001d26462e6bd4
Author: Daniel Kahn Gillmor <dkg at fifthhorseman.net>
Date:   Fri Mar 17 13:31:28 2017 -0400

    more patches from upstream (Closes: #854829)
---
 ...scm-Remove-framework-for-immediate-values.patch | 144 ++++++++++++++
 .../patches/0061-gpgscm-Simplify-hash-tables.patch | 215 +++++++++++++++++++++
 ...ore-warning-alerts-in-the-GNUTLS-handshak.patch |  44 +++++
 ...re-the-conflict-set-includes-the-current-.patch |  72 +++++++
 debian/patches/series                              |   4 +
 5 files changed, 479 insertions(+)

diff --git a/debian/patches/0060-gpgscm-Remove-framework-for-immediate-values.patch b/debian/patches/0060-gpgscm-Remove-framework-for-immediate-values.patch
new file mode 100644
index 0000000..591eb4e
--- /dev/null
+++ b/debian/patches/0060-gpgscm-Remove-framework-for-immediate-values.patch
@@ -0,0 +1,144 @@
+From: Justus Winter <justus at g10code.com>
+Date: Thu, 16 Mar 2017 16:58:00 +0100
+Subject: gpgscm: Remove framework for immediate values.
+
+* tests/gpgscm/scheme.c (IMMEDIATE_TAG): Remove macro.
+(is_immediate): Likewise.
+(set_immediate): Likewise.
+(clr_immediate): Likewise.
+(enum scheme_types): Set the LSB in every value.
+(fill_vector): Adapt.
+(vector_elem): Likewise.
+(set_vector_elem): Likewise.
+(mark): Likewise.
+(gc): Test for the LSB to tell typeflags apart from pointers stored in
+the same memory location.
+--
+
+Supporting immediate values would require invasive changes to the
+interpreter and is likely not worth the trouble.  On the other hand,
+tagging pointers in vectors complicated the hash table implementation
+needlessly.  Therefore, I remove this again.
+
+This fixes a crash on big endian architectures.
+
+GnuPG-bug-id: 2996
+Signed-off-by: Justus Winter <justus at g10code.com>
+(cherry picked from commit 38c955599f7c6c20faeec57d8e1df7d2c0eeba18)
+---
+ tests/gpgscm/scheme.c | 69 ++++++++++++++++++++++-----------------------------
+ 1 file changed, 29 insertions(+), 40 deletions(-)
+
+diff --git a/tests/gpgscm/scheme.c b/tests/gpgscm/scheme.c
+index af97c27..ff91fc0 100644
+--- a/tests/gpgscm/scheme.c
++++ b/tests/gpgscm/scheme.c
+@@ -117,41 +117,29 @@ static const char *strlwr(char *s) {
+ 
+ 

+ 
+-/* Support for immediate values.
+- *
+- * Immediate values are tagged with IMMEDIATE_TAG, which is neither
+- * used in types, nor in pointer values.
+- *
+- * XXX: Currently, we only use this to tag pointers in vectors.  */
+-#define IMMEDIATE_TAG		1
+-#define is_immediate(p)		((pointer) ((uintptr_t) (p) &  IMMEDIATE_TAG))
+-#define set_immediate(p)	((pointer) ((uintptr_t) (p) |  IMMEDIATE_TAG))
+-#define clr_immediate(p)	((pointer) ((uintptr_t) (p) & ~IMMEDIATE_TAG))
+-
+-

+-
++/* All types have the LSB set.  The garbage collector takes advantage
++ * of that to identify types.  */
+ enum scheme_types {
+-  T_STRING=1 << 1,	/* Do not use the lsb, it is used for
+-			 * immediate values.  */
+-  T_NUMBER=2 << 1,
+-  T_SYMBOL=3 << 1,
+-  T_PROC=4 << 1,
+-  T_PAIR=5 << 1,
+-  T_CLOSURE=6 << 1,
+-  T_CONTINUATION=7 << 1,
+-  T_FOREIGN=8 << 1,
+-  T_CHARACTER=9 << 1,
+-  T_PORT=10 << 1,
+-  T_VECTOR=11 << 1,
+-  T_MACRO=12 << 1,
+-  T_PROMISE=13 << 1,
+-  T_ENVIRONMENT=14 << 1,
+-  T_FOREIGN_OBJECT=15 << 1,
+-  T_BOOLEAN=16 << 1,
+-  T_NIL=17 << 1,
+-  T_EOF_OBJ=18 << 1,
+-  T_SINK=19 << 1,
+-  T_LAST_SYSTEM_TYPE=19 << 1
++  T_STRING =		 1 << 1 | 1,
++  T_NUMBER =		 2 << 1 | 1,
++  T_SYMBOL =		 3 << 1 | 1,
++  T_PROC =		 4 << 1 | 1,
++  T_PAIR =		 5 << 1 | 1,
++  T_CLOSURE =		 6 << 1 | 1,
++  T_CONTINUATION =	 7 << 1 | 1,
++  T_FOREIGN =		 8 << 1 | 1,
++  T_CHARACTER =		 9 << 1 | 1,
++  T_PORT =		10 << 1 | 1,
++  T_VECTOR =		11 << 1 | 1,
++  T_MACRO =		12 << 1 | 1,
++  T_PROMISE =		13 << 1 | 1,
++  T_ENVIRONMENT =	14 << 1 | 1,
++  T_FOREIGN_OBJECT =	15 << 1 | 1,
++  T_BOOLEAN =		16 << 1 | 1,
++  T_NIL =		17 << 1 | 1,
++  T_EOF_OBJ =		18 << 1 | 1,
++  T_SINK =		19 << 1 | 1,
++  T_LAST_SYSTEM_TYPE =	19 << 1 | 1
+ };
+ 
+ static const char *
+@@ -1361,20 +1349,20 @@ INTERFACE static void fill_vector(pointer vec, pointer obj) {
+      size_t i;
+      assert (is_vector (vec));
+      for(i = 0; i < vector_length(vec); i++) {
+-          vec->_object._vector._elements[i] = set_immediate(obj);
++          vec->_object._vector._elements[i] = obj;
+      }
+ }
+ 
+ INTERFACE static pointer vector_elem(pointer vec, int ielem) {
+      assert (is_vector (vec));
+      assert (ielem < vector_length(vec));
+-     return clr_immediate(vec->_object._vector._elements[ielem]);
++     return vec->_object._vector._elements[ielem];
+ }
+ 
+ INTERFACE static pointer set_vector_elem(pointer vec, int ielem, pointer a) {
+      assert (is_vector (vec));
+      assert (ielem < vector_length(vec));
+-     vec->_object._vector._elements[ielem] = set_immediate(a);
++     vec->_object._vector._elements[ielem] = a;
+      return a;
+ }
+ 
+@@ -1576,7 +1564,7 @@ E2:  setmark(p);
+      if(is_vector(p)) {
+           int i;
+           for (i = 0; i < vector_length(p); i++) {
+-               mark(clr_immediate(p->_object._vector._elements[i]));
++               mark(p->_object._vector._elements[i]);
+           }
+      }
+ #if SHOW_ERROR_LINE
+@@ -1677,8 +1665,9 @@ static void gc(scheme *sc, pointer a, pointer b) {
+   for (i = sc->last_cell_seg; i >= 0; i--) {
+     p = sc->cell_seg[i] + CELL_SEGSIZE;
+     while (--p >= sc->cell_seg[i]) {
+-      if (typeflag(p) & IMMEDIATE_TAG)
+-        continue;
++      if ((typeflag(p) & 1) == 0)
++	/* All types have the LSB set.  This is not a typeflag.  */
++	continue;
+       if (is_mark(p)) {
+     clrmark(p);
+       } else {
diff --git a/debian/patches/0061-gpgscm-Simplify-hash-tables.patch b/debian/patches/0061-gpgscm-Simplify-hash-tables.patch
new file mode 100644
index 0000000..213cf2c
--- /dev/null
+++ b/debian/patches/0061-gpgscm-Simplify-hash-tables.patch
@@ -0,0 +1,215 @@
+From: Justus Winter <justus at g10code.com>
+Date: Thu, 16 Mar 2017 17:18:01 +0100
+Subject: gpgscm: Simplify hash tables.
+
+* tests/gpgscm/scheme.c (oblist_add_by_name): We now always get a
+slot.  Simplify accordingly.
+(oblist_find_by_name): Always return the slot.
+(vector_elem_slot): New function.
+(new_slot_spec_in_env): We now always get a slot.  Remove parameter
+'env'.  Simplify accordingly.
+(find_slot_spec_in_env): Always return a slot.
+(new_slot_in_env): Adapt callsite.
+(opexe_0): Likewise.
+(opexe_1): Likewise.
+(scheme_define): Likewise.
+--
+
+Now that the ill-devised immediate values framework is gone, there is
+no need to tag the pointers in vectors anymore.  Therefore, we can
+always return a pointer to the slot in the hash table lookup
+functions.
+
+Signed-off-by: Justus Winter <justus at g10code.com>
+(cherry picked from commit 6a3f857224eab108ae38e6259194b01b0ffdad8b)
+---
+ tests/gpgscm/scheme.c | 71 ++++++++++++++++-----------------------------------
+ 1 file changed, 22 insertions(+), 49 deletions(-)
+
+diff --git a/tests/gpgscm/scheme.c b/tests/gpgscm/scheme.c
+index ff91fc0..b76e83c 100644
+--- a/tests/gpgscm/scheme.c
++++ b/tests/gpgscm/scheme.c
+@@ -224,6 +224,7 @@ INTERFACE INLINE int is_vector(pointer p)    { return (type(p)==T_VECTOR); }
+  * represent it.  */
+ #define vector_size(len)	(1 + ((len) - 1 + 2) / 3)
+ INTERFACE static void fill_vector(pointer vec, pointer obj);
++INTERFACE static pointer *vector_elem_slot(pointer vec, int ielem);
+ INTERFACE static pointer vector_elem(pointer vec, int ielem);
+ INTERFACE static pointer set_vector_elem(pointer vec, int ielem, pointer a);
+ INTERFACE INLINE int is_number(pointer p)    { return (type(p)==T_NUMBER); }
+@@ -1073,39 +1074,24 @@ static pointer oblist_initial_value(scheme *sc)
+ /* Add a new symbol NAME at SLOT.  SLOT must be obtained using
+  * oblist_find_by_name, and no insertion must be done between
+  * obtaining the SLOT and calling this function.  Returns the new
+- * symbol.
+- *
+- * If SLOT is NULL, the new symbol is be placed at the appropriate
+- * place in the vector.  */
++ * symbol.  */
+ static pointer oblist_add_by_name(scheme *sc, const char *name, pointer *slot)
+ {
+ #define oblist_add_by_name_allocates	3
+   pointer x;
+-  int location;
+ 
+   gc_disable(sc, gc_reservations (oblist_add_by_name));
+   x = immutable_cons(sc, mk_string(sc, name), sc->NIL);
+   typeflag(x) = T_SYMBOL;
+   setimmutable(car(x));
+-
+-  if (slot == NULL) {
+-    location = hash_fn(name, vector_length(sc->oblist));
+-    set_vector_elem(sc->oblist, location,
+-		    immutable_cons(sc, x, vector_elem(sc->oblist, location)));
+-  } else {
+-    *slot = immutable_cons(sc, x, *slot);
+-  }
+-
++  *slot = immutable_cons(sc, x, *slot);
+   gc_enable(sc);
+   return x;
+ }
+ 
+ /* Lookup the symbol NAME.  Returns the symbol, or NIL if it does not
+  * exist.  In that case, SLOT points to the point where the new symbol
+- * is to be inserted.
+- *
+- * SLOT may be set to NULL if the new symbol should be placed at the
+- * appropriate place in the vector.  */
++ * is to be inserted.  */
+ static INLINE pointer
+ oblist_find_by_name(scheme *sc, const char *name, pointer **slot)
+ {
+@@ -1115,7 +1101,7 @@ oblist_find_by_name(scheme *sc, const char *name, pointer **slot)
+   int d;
+ 
+   location = hash_fn(name, vector_length(sc->oblist));
+-  for (*slot = NULL, x = vector_elem(sc->oblist, location);
++  for (*slot = vector_elem_slot(sc->oblist, location), x = **slot;
+        x != sc->NIL; *slot = &cdr(x), x = **slot) {
+     s = symname(car(x));
+     /* case-insensitive, per R5RS section 2. */
+@@ -1353,6 +1339,12 @@ INTERFACE static void fill_vector(pointer vec, pointer obj) {
+      }
+ }
+ 
++INTERFACE static pointer *vector_elem_slot(pointer vec, int ielem) {
++     assert (is_vector (vec));
++     assert (ielem < vector_length(vec));
++     return &vec->_object._vector._elements[ielem];
++}
++
+ INTERFACE static pointer vector_elem(pointer vec, int ielem) {
+      assert (is_vector (vec));
+      assert (ielem < vector_length(vec));
+@@ -2636,11 +2628,8 @@ static void new_frame_in_env(scheme *sc, pointer old_env)
+ 
+ /* Insert (VARIABLE, VALUE) at SSLOT.  SSLOT must be obtained using
+  * find_slot_spec_in_env, and no insertion must be done between
+- * obtaining SSLOT and the call to this function.
+- *
+- * If SSLOT is NULL, the new slot is put into the appropriate place in
+- * the environment vector.  */
+-static INLINE void new_slot_spec_in_env(scheme *sc, pointer env,
++ * obtaining SSLOT and the call to this function.  */
++static INLINE void new_slot_spec_in_env(scheme *sc,
+                                         pointer variable, pointer value,
+ 					pointer *sslot)
+ {
+@@ -2648,27 +2637,14 @@ static INLINE void new_slot_spec_in_env(scheme *sc, pointer env,
+   pointer slot;
+   gc_disable(sc, gc_reservations (new_slot_spec_in_env));
+   slot = immutable_cons(sc, variable, value);
+-
+-  if (sslot == NULL) {
+-    int location;
+-    assert(is_vector(car(env)));
+-    location = hash_fn(symname(variable), vector_length(car(env)));
+-
+-    set_vector_elem(car(env), location,
+-                    immutable_cons(sc, slot, vector_elem(car(env), location)));
+-  } else {
+-    *sslot = immutable_cons(sc, slot, *sslot);
+-  }
++  *sslot = immutable_cons(sc, slot, *sslot);
+   gc_enable(sc);
+ }
+ 
+ /* Find the slot in ENV under the key HDL.  If ALL is given, look in
+  * all environments enclosing ENV.  If the lookup fails, and SSLOT is
+  * given, the position where the new slot has to be inserted is stored
+- * at SSLOT.
+- *
+- * SSLOT may be set to NULL if the new symbol should be placed at the
+- * appropriate place in the vector.  */
++ * at SSLOT.  */
+ static pointer
+ find_slot_spec_in_env(scheme *sc, pointer env, pointer hdl, int all, pointer **sslot)
+ {
+@@ -2681,13 +2657,11 @@ find_slot_spec_in_env(scheme *sc, pointer env, pointer hdl, int all, pointer **s
+   for (x = env; x != sc->NIL; x = cdr(x)) {
+     if (is_vector(car(x))) {
+       location = hash_fn(symname(hdl), vector_length(car(x)));
+-      sl = NULL;
+-      y = vector_elem(car(x), location);
++      sl = vector_elem_slot(car(x), location);
+     } else {
+       sl = &car(x);
+-      y = *sl;
+     }
+-    for ( ; y != sc->NIL; sl = &cdr(y), y = *sl) {
++    for (y = *sl ; y != sc->NIL; sl = &cdr(y), y = *sl) {
+       d = pointercmp(caar(y), hdl);
+       if (d == 0)
+ 	return car(y);		/* Hit.  */
+@@ -2716,12 +2690,11 @@ static INLINE void new_frame_in_env(scheme *sc, pointer old_env)
+ /* Insert (VARIABLE, VALUE) at SSLOT.  SSLOT must be obtained using
+  * find_slot_spec_in_env, and no insertion must be done between
+  * obtaining SSLOT and the call to this function.  */
+-static INLINE void new_slot_spec_in_env(scheme *sc, pointer env,
++static INLINE void new_slot_spec_in_env(scheme *sc,
+                                         pointer variable, pointer value,
+ 					pointer *sslot)
+ {
+ #define new_slot_spec_in_env_allocates	2
+-  (void) env;
+   assert(is_symbol(variable));
+   *sslot = immutable_cons(sc, immutable_cons(sc, variable, value), *sslot);
+ }
+@@ -2772,7 +2745,7 @@ static INLINE void new_slot_in_env(scheme *sc, pointer variable, pointer value)
+   assert(is_symbol(variable));
+   slot = find_slot_spec_in_env(sc, sc->envir, variable, 0, &sslot);
+   assert(slot == sc->NIL);
+-  new_slot_spec_in_env(sc, sc->envir, variable, value, sslot);
++  new_slot_spec_in_env(sc, variable, value, sslot);
+ }
+ 
+ static INLINE void set_slot_in_env(scheme *sc, pointer slot, pointer value)
+@@ -3534,7 +3507,7 @@ static pointer opexe_0(scheme *sc, enum scheme_opcodes op) {
+           if (x != sc->NIL) {
+                set_slot_in_env(sc, x, sc->value);
+           } else {
+-	       new_slot_spec_in_env(sc, sc->envir, sc->code, sc->value, sslot);
++	       new_slot_spec_in_env(sc, sc->code, sc->value, sslot);
+           }
+           s_return(sc,sc->code);
+      }
+@@ -3856,7 +3829,7 @@ static pointer opexe_1(scheme *sc, enum scheme_opcodes op) {
+           if (x != sc->NIL) {
+                set_slot_in_env(sc, x, sc->value);
+           } else {
+-	       new_slot_spec_in_env(sc, sc->envir, sc->code, sc->value, sslot);
++	       new_slot_spec_in_env(sc, sc->code, sc->value, sslot);
+           }
+           s_return(sc,sc->code);
+      }
+@@ -5811,7 +5784,7 @@ void scheme_define(scheme *sc, pointer envir, pointer symbol, pointer value) {
+      if (x != sc->NIL) {
+           set_slot_in_env(sc, x, value);
+      } else {
+-          new_slot_spec_in_env(sc, envir, symbol, value, sslot);
++          new_slot_spec_in_env(sc, symbol, value, sslot);
+      }
+ }
+ 
diff --git a/debian/patches/0062-dirmngr-Ignore-warning-alerts-in-the-GNUTLS-handshak.patch b/debian/patches/0062-dirmngr-Ignore-warning-alerts-in-the-GNUTLS-handshak.patch
new file mode 100644
index 0000000..3dfa9c4
--- /dev/null
+++ b/debian/patches/0062-dirmngr-Ignore-warning-alerts-in-the-GNUTLS-handshak.patch
@@ -0,0 +1,44 @@
+From: Werner Koch <wk at gnupg.org>
+Date: Fri, 17 Mar 2017 12:46:09 +0100
+Subject: dirmngr: Ignore warning alerts in the GNUTLS handshake.
+
+* dirmngr/http.c (send_request) [GNUTLS]: Don't bail out on warning
+alerts.
+--
+
+GnuPG-bug-id: 2833
+Signed-off-by: Werner Koch <wk at gnupg.org>
+(cherry picked from commit 69c521df422a6c9a6b0a93e45c9373a8b6ceb28e)
+---
+ dirmngr/http.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/dirmngr/http.c b/dirmngr/http.c
+index 3adf6e5..04a30d6 100644
+--- a/dirmngr/http.c
++++ b/dirmngr/http.c
+@@ -1903,6 +1903,7 @@ send_request (http_t hd, const char *httphost, const char *auth,
+       gnutls_transport_set_push_function (hd->session->tls_session,
+                                           my_gnutls_write);
+ 
++    handshake_again:
+       do
+         {
+           rc = gnutls_handshake (hd->session->tls_session);
+@@ -1918,10 +1919,15 @@ send_request (http_t hd, const char *httphost, const char *auth,
+ 
+               alertno = gnutls_alert_get (hd->session->tls_session);
+               alertstr = gnutls_alert_get_name (alertno);
+-              log_info ("TLS handshake failed: %s (alert %d)\n",
++              log_info ("TLS handshake %s: %s (alert %d)\n",
++                        rc == GNUTLS_E_WARNING_ALERT_RECEIVED
++                        ? "warning" : "failed",
+                         alertstr, (int)alertno);
+               if (alertno == GNUTLS_A_UNRECOGNIZED_NAME && server)
+                 log_info ("  (sent server name '%s')\n", server);
++
++              if (rc == GNUTLS_E_WARNING_ALERT_RECEIVED)
++                goto handshake_again;
+             }
+           else
+             log_info ("TLS handshake failed: %s\n", gnutls_strerror (rc));
diff --git a/debian/patches/0063-gpg-Make-sure-the-conflict-set-includes-the-current-.patch b/debian/patches/0063-gpg-Make-sure-the-conflict-set-includes-the-current-.patch
new file mode 100644
index 0000000..2c2c2b9
--- /dev/null
+++ b/debian/patches/0063-gpg-Make-sure-the-conflict-set-includes-the-current-.patch
@@ -0,0 +1,72 @@
+From: "Neal H. Walfield" <neal at g10code.com>
+Date: Fri, 17 Mar 2017 13:36:51 +0100
+Subject: gpg: Make sure the conflict set includes the current key.
+
+* g10/tofu.c (get_trust): Sanity check CONFLICT_SET after calling
+get_policy.  If POLICY is 'auto' and the default policy is 'ask', make
+sure CONFLICT_SET includes the current key.
+
+--
+Signed-off-by: Neal H. Walfield <neal at g10code.com>
+GnuPG-bug-id: 2959
+Debian-bug-id: 854829
+
+Signed-off-by: Neal H. Walfield <neal at g10code.com>
+(cherry picked from commit b1106b4d640325c60a7212a4a44e4f67c0e3312d)
+---
+ g10/tofu.c | 28 +++++++++++++++++++++++++---
+ 1 file changed, 25 insertions(+), 3 deletions(-)
+
+diff --git a/g10/tofu.c b/g10/tofu.c
+index 9d9d8df..f2bd0c5 100644
+--- a/g10/tofu.c
++++ b/g10/tofu.c
+@@ -2304,9 +2304,14 @@ build_conflict_set (tofu_dbs_t dbs,
+ 
+ 
+ /* Return the effective policy for the binding <FINGERPRINT, EMAIL>
+- * (email has already been normalized) and any conflict information in
+- * *CONFLICT_SETP, if CONFLICT_SETP is not NULL.  Returns
+- * _tofu_GET_POLICY_ERROR if an error occurs.
++ * (email has already been normalized).  Returns
++ * _tofu_GET_POLICY_ERROR if an error occurs.  Returns any conflict
++ * information in *CONFLICT_SETP if CONFLICT_SETP is not NULL and the
++ * returned policy is TOFU_POLICY_ASK (consequently, if there is a
++ * conflict, but the user set the policy to good *CONFLICT_SETP will
++ * empty).  Note: as per build_conflict_set, which is used to build
++ * the conflict information, the conflict information includes the
++ * current user id as the first element of the linked list.
+  *
+  * This function registers the binding in the bindings table if it has
+  * not yet been registered.
+@@ -2689,6 +2694,15 @@ get_trust (ctrl_t ctrl, PKT_public_key *pk,
+   policy = get_policy (dbs, pk, fingerprint, user_id, email,
+                        &conflict_set, now);
+ 
++  if (policy == TOFU_POLICY_ASK)
++    /* The conflict set should always contain at least one element:
++     * the current key.  */
++    log_assert (conflict_set);
++  else
++    /* If the policy is not TOFU_POLICY_ASK, then conflict_set will be
++     * NULL.  */
++    log_assert (! conflict_set);
++
+   /* If the key is ultimately trusted, there is nothing to do.  */
+   {
+     u32 kid[2];
+@@ -2710,6 +2724,14 @@ get_trust (ctrl_t ctrl, PKT_public_key *pk,
+                    " auto (default: %s).\n",
+ 		   fingerprint, email,
+ 		   tofu_policy_str (opt.tofu_default_policy));
++
++      if (policy == TOFU_POLICY_ASK)
++        /* The default policy is ASK, but there is no conflict (policy
++         * was 'auto').  In this case, we need to make sure the
++         * conflict set includes at least the current user id.  */
++        {
++          add_to_strlist (&conflict_set, fingerprint);
++        }
+     }
+   switch (policy)
+     {
diff --git a/debian/patches/series b/debian/patches/series
index 360f691..1a14f5e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -57,3 +57,7 @@ gpg-agent-idling/0011-agent-Avoid-scheduled-checks-on-socket-when-inotify-.patch
 0057-tests-Dump-the-tools-that-the-tests-are-going-to-use.patch
 0058-tests-Fix-using-tools-from-the-build-directory.patch
 0059-agent-g10-Remove-redundant-SERIALNO-request.patch
+0060-gpgscm-Remove-framework-for-immediate-values.patch
+0061-gpgscm-Simplify-hash-tables.patch
+0062-dirmngr-Ignore-warning-alerts-in-the-GNUTLS-handshak.patch
+0063-gpg-Make-sure-the-conflict-set-includes-the-current-.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