diff options
author | Werner Koch <[email protected]> | 2025-07-24 08:38:23 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2025-07-24 08:38:23 +0000 |
commit | bcf94337fb39fd4b9c42490392a795ac8c8886b2 (patch) | |
tree | 2f94bcfa64c69dc1e7669a7c9baefd5ad75e055c | |
parent | gpg: Use the new constants in one function. (diff) | |
download | gnupg-bcf94337fb39fd4b9c42490392a795ac8c8886b2.tar.gz gnupg-bcf94337fb39fd4b9c42490392a795ac8c8886b2.zip |
agent: Allow colon delimited fingerprints for ISTRUSTED.
* agent/command.c (cmd_istrusted): Improve arg parser.
-rw-r--r-- | agent/command.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/agent/command.c b/agent/command.c index a9eb0104e..dcb758e37 100644 --- a/agent/command.c +++ b/agent/command.c @@ -541,14 +541,26 @@ cmd_istrusted (assuan_context_t ctx, char *line) { ctrl_t ctrl = assuan_get_pointer (ctx); int rc, n, i; - char *p; + char *p, *pn; char fpr[41]; /* Parse the fingerprint value. */ + pn = NULL; /* Indicates that we have not reparsed. */ + parseagain: for (p=line,n=0; hexdigitp (p); p++, n++) ; if (*p || !(n == 40 || n == 32)) - return set_error (GPG_ERR_ASS_PARAMETER, "invalid fingerprint"); + { + if (!pn && *p && strchr (p, ':')) + { + for (pn=p=line; *p ; p++) + if (*p != ':') + *pn++ = *p; + *pn = 0; + goto parseagain; + } + return set_error (GPG_ERR_ASS_PARAMETER, "invalid fingerprint"); + } i = 0; if (n==32) { |