summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorDamien Miller <djm@cvs.openbsd.org>2020-05-26 01:59:47 +0000
committerDamien Miller <djm@cvs.openbsd.org>2020-05-26 01:59:47 +0000
commitd7c4f66c050ffd2b12029a3e03890ebf6262f55b (patch)
treee9d88d366a8fc344ff61c9bb83cde9c737c93494 /usr.bin
parent13a3ec176a1c7aaca4cefd707b571225709e1a84 (diff)
fix memleak of signature; from Pedro Martelletto
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/ssh/ssh-sk-helper.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/usr.bin/ssh/ssh-sk-helper.c b/usr.bin/ssh/ssh-sk-helper.c
index 90e8b08abdd..76a11e2a8d8 100644
--- a/usr.bin/ssh/ssh-sk-helper.c
+++ b/usr.bin/ssh/ssh-sk-helper.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-sk-helper.c,v 1.9 2020/01/25 23:13:09 djm Exp $ */
+/* $OpenBSD: ssh-sk-helper.c,v 1.10 2020/05/26 01:59:46 djm Exp $ */
/*
* Copyright (c) 2019 Google LLC
*
@@ -90,12 +90,12 @@ process_sign(struct sshbuf *req)
{
int r = SSH_ERR_INTERNAL_ERROR;
struct sshbuf *resp, *kbuf;
- struct sshkey *key;
+ struct sshkey *key = NULL;
uint32_t compat;
const u_char *message;
- u_char *sig;
- size_t msglen, siglen;
- char *provider, *pin;
+ u_char *sig = NULL;
+ size_t msglen, siglen = 0;
+ char *provider = NULL, *pin = NULL;
if ((r = sshbuf_froms(req, &kbuf)) != 0 ||
(r = sshbuf_get_cstring(req, &provider, NULL)) != 0 ||
@@ -131,8 +131,11 @@ process_sign(struct sshbuf *req)
(r = sshbuf_put_string(resp, sig, siglen)) != 0)
fatal("%s: buffer error: %s", __progname, ssh_err(r));
out:
+ sshkey_free(key);
sshbuf_free(kbuf);
free(provider);
+ if (sig != NULL)
+ freezero(sig, siglen);
if (pin != NULL)
freezero(pin, strlen(pin));
return resp;