scd: Fix memory leak in command READKEY.

* scd/command.c (cmd_readcert): Replace xstrdup by xtrystrdup.
(cmd_readkey): Ditto.  Fix memory leak.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2020-01-13 12:18:53 +01:00
parent 0e48aa0849
commit 2b843be5ac
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
2 changed files with 9 additions and 3 deletions

View File

@ -2046,7 +2046,6 @@ app_do_with_keygrip (ctrl_t ctrl, int action, const char *keygrip_str,
int capability)
{
int locked = 0;
gpg_error_t err;
card_t c;
app_t a, a_prev;

View File

@ -519,7 +519,10 @@ cmd_readcert (assuan_context_t ctx, char *line)
if ((rc = open_card (ctrl)))
return rc;
line = xstrdup (line); /* Need a copy of the line. */
line = xtrystrdup (line); /* Need a copy of the line. */
if (!line)
return gpg_error_from_syserror ();
rc = app_readcert (ctrl->card_ctx, ctrl, line, &cert, &ncert);
if (rc)
log_error ("app_readcert failed: %s\n", gpg_strerror (rc));
@ -634,7 +637,10 @@ cmd_readkey (assuan_context_t ctx, char *line)
opt_info = opt_nokey = 1;
line = skip_options (line);
line = xstrdup (line); /* Need a copy of the line. */
line = xtrystrdup (line); /* Need a copy of the line. */
if (!line)
return gpg_error_from_syserror ();
if (strlen (line) == 40)
{
@ -689,6 +695,7 @@ cmd_readkey (assuan_context_t ctx, char *line)
leave:
xfree (pk);
xfree (line);
return rc;
}