diff options
author | Werner Koch <[email protected]> | 2015-08-04 15:32:08 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2015-08-04 15:32:08 +0000 |
commit | 4a326d7c9a3b09efcccf4de00d6c003829ad89e8 (patch) | |
tree | 7edd719f4c2d544a84e133b20cb7f55096bce3f3 | |
parent | gpg: Properly handle legacy keys while looking for a secret key. (diff) | |
download | gnupg-4a326d7c9a3b09efcccf4de00d6c003829ad89e8.tar.gz gnupg-4a326d7c9a3b09efcccf4de00d6c003829ad89e8.zip |
gpg: Fix duplicate key import due to legacy key in keyring.
* g10/keydb.c (keydb_search_fpr): Skip legacy keys.
--
A test case for this problem can be found at
GnuPG-bug-id: 2031
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | g10/keydb.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/g10/keydb.c b/g10/keydb.c index 68cf8328d..3dc9ec72e 100644 --- a/g10/keydb.c +++ b/g10/keydb.c @@ -1753,10 +1753,17 @@ keydb_search_kid (KEYDB_HANDLE hd, u32 *kid) gpg_error_t keydb_search_fpr (KEYDB_HANDLE hd, const byte *fpr) { + gpg_error_t err; KEYDB_SEARCH_DESC desc; memset (&desc, 0, sizeof desc); desc.mode = KEYDB_SEARCH_MODE_FPR; memcpy (desc.u.fpr, fpr, MAX_FINGERPRINT_LEN); - return keydb_search (hd, &desc, 1, NULL); + do + { + err = keydb_search (hd, &desc, 1, NULL); + } + while (gpg_err_code (err) == GPG_ERR_LEGACY_KEY); + + return err; } |