aboutsummaryrefslogtreecommitdiffstats
path: root/agent/call-pinentry.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2019-08-06 20:38:30 +0000
committerNIIBE Yutaka <[email protected]>2019-08-06 20:38:30 +0000
commitbb82ad018a7bf93bd704cf44e51cd086e41a4ad5 (patch)
tree8d75248205542d04e6366e8a8f1de2783aef2763 /agent/call-pinentry.c
parentcommon: Fix line break handling, finding a space. (diff)
downloadgnupg-bb82ad018a7bf93bd704cf44e51cd086e41a4ad5.tar.gz
gnupg-bb82ad018a7bf93bd704cf44e51cd086e41a4ad5.zip
agent: Fix an error path of agent_get_confirmation.
* agent/call-pinentry.c (agent_get_confirmation): Make sure unlock_pinentry is always called. Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'agent/call-pinentry.c')
-rw-r--r--agent/call-pinentry.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/agent/call-pinentry.c b/agent/call-pinentry.c
index a895a8b8f..34eb77cfb 100644
--- a/agent/call-pinentry.c
+++ b/agent/call-pinentry.c
@@ -1481,15 +1481,16 @@ agent_get_confirmation (ctrl_t ctrl,
npth_t thread;
rc = watch_sock_start (&sock_watched, &thread);
- if (rc)
- return rc;
-
- rc = assuan_transact (entry_ctx, "CONFIRM",
- NULL, NULL, NULL, NULL, NULL, NULL);
- if (rc && gpg_err_source (rc) && gpg_err_code (rc) == GPG_ERR_ASS_CANCELED)
- rc = gpg_err_make (gpg_err_source (rc), GPG_ERR_CANCELED);
+ if (!rc)
+ {
+ rc = assuan_transact (entry_ctx, "CONFIRM",
+ NULL, NULL, NULL, NULL, NULL, NULL);
+ if (rc && gpg_err_source (rc)
+ && gpg_err_code (rc) == GPG_ERR_ASS_CANCELED)
+ rc = gpg_err_make (gpg_err_source (rc), GPG_ERR_CANCELED);
- watch_sock_end (&sock_watched, &thread);
+ watch_sock_end (&sock_watched, &thread);
+ }
return unlock_pinentry (ctrl, rc);
}