aboutsummaryrefslogtreecommitdiffstats
path: root/agent/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/command.c')
-rw-r--r--agent/command.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/agent/command.c b/agent/command.c
index 12770dac8..1f3923522 100644
--- a/agent/command.c
+++ b/agent/command.c
@@ -794,7 +794,7 @@ cmd_passwd (ASSUAN_CONTEXT ctx, char *line)
return map_to_assuan_status (rc);
}
-/* PRESET_PASSPHRASE <hexstring_with_keygrip> <timeout> <passwd>
+/* PRESET_PASSPHRASE <hexstring_with_keygrip> <timeout> <hexstring>
Set the cached passphrase/PIN for the key identified by the keygrip
to passwd for the given time, where -1 means infinite and 0 means
@@ -809,6 +809,7 @@ cmd_preset_passphrase (ASSUAN_CONTEXT ctx, char *line)
char *grip_clear = NULL;
char *passphrase = NULL;
int ttl;
+ size_t len;
if (!opt.allow_preset_passphrase)
return gpg_error (GPG_ERR_NOT_SUPPORTED);
@@ -837,6 +838,12 @@ cmd_preset_passphrase (ASSUAN_CONTEXT ctx, char *line)
while (!(*line != ' ' && *line != '\t'))
line++;
+ /* Syntax check the hexstring. */
+ rc = parse_hexstring (ctx, line, &len);
+ if (rc)
+ return rc;
+ line[len] = '\0';
+
/* If there is a passphrase, use it. Currently, a passphrase is
required. */
if (*line)