gpg: More diagnostics for a launched pinentry.

* agent/call-pinentry.c (start_pinentry): Call getinfo/ttyinfo.
* g10/server.c (gpg_proxy_pinentry_notify): Simplify the output so
that we do not change the code when adding new fields to
PINENTRY_LAUNCHED.
--

This patch changes the --verbose output of gpg to show
for example

  gpg: pinentry launched (5228 gtk2 1.0.1-beta10 \
  /dev/pts/4 xterm localhost:10.0)

the used tty, its type, and the value of DISPLAY in addiion to the
pid, flavor, and version.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2017-02-03 12:04:52 +01:00
parent 407f5f9bae
commit 7052a0d77c
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
2 changed files with 13 additions and 12 deletions

View File

@ -541,7 +541,7 @@ start_pinentry (ctrl_t ctrl)
}
/* Ask the pinentry for its version and flavor and streo that as a
/* Ask the pinentry for its version and flavor and store that as a
* string in MB. This information is useful for helping users to
* figure out Pinentry problems. */
{
@ -555,6 +555,10 @@ start_pinentry (ctrl_t ctrl)
if (assuan_transact (entry_ctx, "GETINFO version",
put_membuf_cb, &mb, NULL, NULL, NULL, NULL))
put_membuf_str (&mb, "unknown");
put_membuf_str (&mb, " ");
if (assuan_transact (entry_ctx, "GETINFO ttyinfo",
put_membuf_cb, &mb, NULL, NULL, NULL, NULL))
put_membuf_str (&mb, "? ? ?");
put_membuf (&mb, "", 1);
flavor_version = get_membuf (&mb, NULL);
}

View File

@ -770,18 +770,15 @@ gpg_server (ctrl_t ctrl)
gpg_error_t
gpg_proxy_pinentry_notify (ctrl_t ctrl, const unsigned char *line)
{
if (opt.verbose)
const char *s;
if (opt.verbose
&& !strncmp (line, "PINENTRY_LAUNCHED", 17)
&& (line[17]==' '||!line[17]))
{
char *linecopy = xtrystrdup (line);
char *fields[4];
if (linecopy
&& split_fields (linecopy, fields, DIM (fields)) >= 4
&& !strcmp (fields[0], "PINENTRY_LAUNCHED"))
log_info (_("pinentry launched (pid %s, flavor %s, version %s)\n"),
fields[1], fields[2], fields[3]);
xfree (linecopy);
for (s = line + 17; *s && spacep (s); s++)
;
log_info (_("pinentry launched (%s)\n"), s);
}
if (!ctrl || !ctrl->server_local