From: djm@openbsd.org Date: Wed, 29 Mar 2023 00:18:35 +0000 (+0000) Subject: upstream: fix memory leak; Coverity CID 291848 X-Git-Tag: V_9_4_P1~113 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=13ae327eae598b1043e5ec30e4b170edb3c898a5;p=thirdparty%2Fopenssh-portable.git upstream: fix memory leak; Coverity CID 291848 with/ok dtucker@ OpenBSD-Commit-ID: 37f80cb5d075ead5a00ad1b74175684ab1156ff8 --- diff --git a/auth-options.c b/auth-options.c index 7cb2a640a..88e9eb1c1 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 * @@ -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