diff options
author | djm@openbsd.org <djm@openbsd.org> | 2023-03-29 00:18:35 +0000 |
---|---|---|
committer | Darren Tucker <dtucker@dtucker.net> | 2023-03-29 12:22:23 +1100 |
commit | 13ae327eae598b1043e5ec30e4b170edb3c898a5 (patch) | |
tree | 544cea5ecd7756c5db2dadc085d5c93b32169eb2 | |
parent | 9ffa76e1284c85bf459c3dcb8e995733a8967e1b (diff) | |
download | openssh-git-13ae327eae598b1043e5ec30e4b170edb3c898a5.tar.gz |
upstream: fix memory leak; Coverity CID 291848
with/ok dtucker@
OpenBSD-Commit-ID: 37f80cb5d075ead5a00ad1b74175684ab1156ff8
-rw-r--r-- | auth-options.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/auth-options.c b/auth-options.c index 7cb2a640..88e9eb1c 100644 --- a/auth-options.c +++ b/auth-options.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth-options.c,v 1.98 2022/02/08 08:59:12 dtucker Exp $ */ +/* $OpenBSD: auth-options.c,v 1.99 2023/03/29 00:18:35 djm Exp $ */ /* * Copyright (c) 2018 Damien Miller <djm@mindrot.org> * @@ -703,7 +703,7 @@ serialise_array(struct sshbuf *m, char **a, size_t n) { struct sshbuf *b; size_t i; - int r; + int r = SSH_ERR_INTERNAL_ERROR; if (n > INT_MAX) return SSH_ERR_INTERNAL_ERROR; @@ -712,18 +712,17 @@ serialise_array(struct sshbuf *m, char **a, size_t n) return SSH_ERR_ALLOC_FAIL; } for (i = 0; i < n; i++) { - if ((r = sshbuf_put_cstring(b, a[i])) != 0) { - sshbuf_free(b); - return r; - } + if ((r = sshbuf_put_cstring(b, a[i])) != 0) + goto out; } if ((r = sshbuf_put_u32(m, n)) != 0 || - (r = sshbuf_put_stringb(m, b)) != 0) { - sshbuf_free(b); - return r; - } + (r = sshbuf_put_stringb(m, b)) != 0) + goto out; /* success */ - return 0; + r = 0; + out: + sshbuf_free(b); + return r; } static int |