aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2015-08-04 10:28:17 +0000
committerWerner Koch <[email protected]>2015-08-04 10:28:17 +0000
commitf05a63b10428df2878b1bb6fde57a2fc2aa99105 (patch)
treeca75fa67e8608a9b25eb9dc002f6e124e22cb427
parentdoc: Two typo fixes. (diff)
downloadgnupg-f05a63b10428df2878b1bb6fde57a2fc2aa99105.tar.gz
gnupg-f05a63b10428df2878b1bb6fde57a2fc2aa99105.zip
gpg: Properly handle legacy keys while looking for a secret key.
* g10/getkey.c (have_secret_key_with_kid): Skip legacy keys. -- This fixes GnuPG-bug-id: 2031 Signed-off-by: Werner Koch <[email protected]>
-rw-r--r--g10/getkey.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/g10/getkey.c b/g10/getkey.c
index f02e8c2b1..3a6016113 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -3058,8 +3058,14 @@ have_secret_key_with_kid (u32 *keyid)
desc.mode = KEYDB_SEARCH_MODE_LONG_KID;
desc.u.kid[0] = keyid[0];
desc.u.kid[1] = keyid[1];
- while (!result && !(err = keydb_search (kdbhd, &desc, 1, NULL)))
+ while (!result)
{
+ err = keydb_search (kdbhd, &desc, 1, NULL);
+ if (gpg_err_code (err) == GPG_ERR_LEGACY_KEY)
+ continue;
+ if (err)
+ break;
+
err = keydb_get_keyblock (kdbhd, &keyblock);
if (err)
{
@@ -3085,6 +3091,7 @@ have_secret_key_with_kid (u32 *keyid)
}
release_kbnode (keyblock);
}
+
keydb_release (kdbhd);
return result;
}