diff --git a/g10/gpg.c b/g10/gpg.c index 36e65425b..75060b821 100644 --- a/g10/gpg.c +++ b/g10/gpg.c @@ -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);