diff options
author | Neal H. Walfield <neal@g10code.com> | 2015-11-16 10:34:01 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@g10code.com> | 2015-11-16 10:34:01 +0100 |
commit | 8e2bea22b0927f4f95a248cc7517f407a705d8a8 (patch) | |
tree | cd348eabb2ca97ff174bdd98c2cf681e79e020d9 /g10 | |
parent | gpg: Use only one fingerprint formatting function. (diff) | |
download | gnupg2-8e2bea22b0927f4f95a248cc7517f407a705d8a8.tar.xz gnupg2-8e2bea22b0927f4f95a248cc7517f407a705d8a8.zip |
gpg: Fix error checking and improve error reporting.
* g10/gpg.c (check_user_ids): Differentiate between a second result
and an error. If the key specification is ambiguous or an error
occurs, set RC appropriately.
--
Signed-off-by: Neal H. Walfield <neal@g10code.com>
Reported-by: Werner Koch <wk@gnupg.org>
Suggested-by: NIIBE Yutaka <gniibe@fsij.org>
Diffstat (limited to 'g10')
-rw-r--r-- | g10/gpg.c | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -2196,8 +2196,8 @@ check_user_ids (strlist_t *sp, /* Continue the search. */ err = keydb_search (hd, &desc, 1, NULL); - if (! (gpg_err_code (err) == GPG_ERR_NOT_FOUND - || gpg_err_code (err) == GPG_ERR_EOF)) + if (! err) + /* Another result! */ { char fingerprint_bin2[MAX_FINGERPRINT_LEN]; size_t fingerprint_bin2_len = sizeof (fingerprint_bin2); @@ -2208,6 +2208,9 @@ check_user_ids (strlist_t *sp, if (!opt.quiet) log_info (_("(check argument of option '%s')\n"), option); + if (! rc) + rc = GPG_ERR_CONFLICT; + err = keydb_get_keyblock (hd, &kb); if (err) log_error (_("error reading key block for '%s': %s.\n"), @@ -2225,6 +2228,15 @@ check_user_ids (strlist_t *sp, release_kbnode (kb); } } + else if (! (gpg_err_code (err) == GPG_ERR_NOT_FOUND + || gpg_err_code (err) == GPG_ERR_EOF)) + /* An error (other than "not found"). */ + { + log_error (_("Error reading from keyring: %s\n"), + gpg_strerror (err)); + if (! rc) + rc = err; + } } strlist_rev (&s2); |