aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/getkey.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/g10/getkey.c b/g10/getkey.c
index 7e47b5625..20c344dfa 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -2942,17 +2942,20 @@ have_secret_key_with_kid (u32 *keyid)
for (node = keyblock; node; node = node->next)
{
/* Bit 0 of the flags is set if the search found the key
- using that key or subkey. */
+ using that key or subkey. Note: a search will only ever
+ match a single key or subkey. */
if ((node->flag & 1))
{
assert (node->pkt->pkttype == PKT_PUBLIC_KEY
|| node->pkt->pkttype == PKT_PUBLIC_SUBKEY);
- if (!agent_probe_secret_key (NULL, node->pkt->pkt.public_key))
- {
- result = 1;
- break;
- }
+ if (agent_probe_secret_key (NULL, node->pkt->pkt.public_key) == 0)
+ /* Not available. */
+ result = 1;
+ else
+ result = 0;
+
+ break;
}
}
release_kbnode (keyblock);