--- gnupg/Makefile 2014-11-22 09:55:13.000000000 +0000 +++ gnupg/Makefile 2014-12-13 01:29:55.000000000 +0000 @@ -2,7 +2,7 @@ PORTNAME= gnupg PORTVERSION= 2.1.0 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= security MASTER_SITES= ${MASTER_SITE_GNUPG} MASTER_SITE_SUBDIR= gnupg --- gnupg/files/patch-fix-export-bug 1970-01-01 01:00:00.000000000 +0100 +++ gnupg/files/patch-fix-export-bug 2014-12-13 01:44:13.000000000 +0000 @@ -0,0 +1,61 @@ +From f1c3eb4b16ca43b5d3712a3b54c22d17ce85af47 Mon Sep 17 00:00:00 2001 +From: Werner Koch +Date: Mon, 1 Dec 2014 11:54:51 +0100 +Subject: [PATCH] gpg: Fix export bug using exact search with only one key in + the keybox. + +* g10/export.c (do_export_stream): Disable caching. +* g10/keyserver.c (keyidlist): Ditto. +-- + +GnuPG-bug-id: 1774 +--- + g10/export.c | 2 ++ + g10/keydb.c | 3 +++ + g10/keyserver.c | 3 ++- + 3 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/g10/export.c b/g10/export.c +index a92eace..b65fb8d 100644 +--- g10/export.c ++++ g10/export.c +@@ -804,6 +804,8 @@ do_export_stream (ctrl_t ctrl, iobuf_t out, strlist_t users, int secret, + sl->d, gpg_strerror (err)); + } + ++ keydb_disable_caching (kdbhd); /* We are looping the search. */ ++ + /* It would be nice to see which of the given users did actually + match one in the keyring. To implement this we need to have + a found flag for each entry in desc. To set this flag we +diff --git a/g10/keydb.c b/g10/keydb.c +index bafae18..a578c7c 100644 +--- g10/keydb.c ++++ g10/keydb.c +@@ -1424,6 +1424,9 @@ keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc, + if (DBG_CACHE) + dump_search_desc (hd, "keydb_search", desc, ndesc); + ++ /* NB: If one of the exact search modes below is used in a loop to ++ walk over all keys (with the same fingerprint) the caching must ++ have been disabled for the handle. */ + if (!hd->no_caching + && ndesc == 1 + && (desc[0].mode == KEYDB_SEARCH_MODE_FPR20 +diff --git a/g10/keyserver.c b/g10/keyserver.c +index 5bc1eba..e3ad707 100644 +--- g10/keyserver.c ++++ g10/keyserver.c +@@ -1229,7 +1229,8 @@ keyidlist(strlist_t users,KEYDB_SEARCH_DESC **klist,int *count,int fakev3) + + *klist=xmalloc(sizeof(KEYDB_SEARCH_DESC)*num); + +- kdbhd=keydb_new (); ++ kdbhd = keydb_new (); ++ keydb_disable_caching (kdbhd); /* We are looping the search. */ + + if(!users) + { +-- +1.7.10.4 +