aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2019-07-26 01:00:31 +0000
committerNIIBE Yutaka <[email protected]>2019-07-26 01:03:36 +0000
commit15fe78184cc66ce6e657a6e949a522d7821f8a1c (patch)
tree5d87808089c4dfdafc162ff7f94d2c0c205c6862
parentgpg,gpgsm: Handle pkdecrypt responses with/without NUL terminators. (diff)
downloadgnupg-15fe78184cc66ce6e657a6e949a522d7821f8a1c.tar.gz
gnupg-15fe78184cc66ce6e657a6e949a522d7821f8a1c.zip
sm: Fix error checking of decryption result.
* sm/call-agent.c (gpgsm_agent_pkdecrypt): Fix condition. Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--sm/call-agent.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/sm/call-agent.c b/sm/call-agent.c
index f9069a3b1..7ee728b74 100644
--- a/sm/call-agent.c
+++ b/sm/call-agent.c
@@ -528,7 +528,8 @@ gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
return rc;
}
- put_membuf (&data, "", 1); /* Make sure it is 0 terminated so we can invoke strtoul safely. */
+ /* Make sure it is 0 terminated so we can invoke strtoul safely. */
+ put_membuf (&data, "", 1);
buf = get_membuf (&data, &len);
if (!buf)
return gpg_error (GPG_ERR_ENOMEM);
@@ -544,14 +545,14 @@ gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
if (buf[len-1] != ')')
return gpg_error (GPG_ERR_INV_SEXP);
len--; /* Drop the final close-paren: */
- p = buf + 8; /* Skip leading parenthesis and the value tag. */
- len -= 8; /* Count only the data of the second part. */
+ p = buf + 8; /* Skip leading parenthesis and the value tag. */
+ len -= 8; /* Count only the data of the second part. */
}
else
{
/* For compatibility with older gpg-agents handle the old style
- incomplete S-exps. */
- len--; /* Do not count the Nul. */
+ incomplete S-exps. */
+ len--; /* Do not count the Nul. */
p = buf;
}
@@ -559,8 +560,8 @@ gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc,
if (!n || *endp != ':')
return gpg_error (GPG_ERR_INV_SEXP);
endp++;
- if (endp-p+n > len)
- return gpg_error (GPG_ERR_INV_SEXP); /* Oops: Inconsistent S-Exp. */
+ if (endp-p+n != len)
+ return gpg_error (GPG_ERR_INV_SEXP); /* Oops: Inconsistent S-Exp. */
memmove (buf, endp, n);