From 5a327e8001c4698330fabc83421277a590d5b085 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 2 Jun 2022 15:50:57 +0900 Subject: [PATCH] tools: Add a way to cancell INQUIRE for gpg-connect-agent. * tools/gpg-connect-agent.c (handle_inquire): When the helper program exit status is not 0, it means cancellation, now. -- GnuPG-bug-id: 6010 Signed-off-by: NIIBE Yutaka --- tools/gpg-connect-agent.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/gpg-connect-agent.c b/tools/gpg-connect-agent.c index 2ae1374fc..626c6c61b 100644 --- a/tools/gpg-connect-agent.c +++ b/tools/gpg-connect-agent.c @@ -1978,6 +1978,7 @@ handle_inquire (assuan_context_t ctx, char *line) FILE *fp = NULL; char buffer[1024]; int rc, n; + int cancelled = 0; /* Skip the command and trailing spaces. */ for (; *line && !spacep (line); line++) @@ -2059,21 +2060,22 @@ handle_inquire (assuan_context_t ctx, char *line) log_error ("error reading from '%s': %s\n", d->file, strerror (errno)); } - rc = assuan_send_data (ctx, NULL, 0); - if (rc) - log_error ("sending data back failed: %s\n", gpg_strerror (rc) ); - if (d->is_var) ; else if (d->is_prog) { #ifndef HAVE_W32CE_SYSTEM if (pclose (fp)) - log_error ("error running '%s': %s\n", d->file, strerror (errno)); + cancelled = 1; #endif } else fclose (fp); + + rc = assuan_send_data (ctx, NULL, cancelled); + if (rc) + log_error ("sending data back failed: %s\n", gpg_strerror (rc) ); + return 1; }