From 13ae327eae598b1043e5ec30e4b170edb3c898a5 Mon Sep 17 00:00:00 2001 From: "djm@openbsd.org" Date: Wed, 29 Mar 2023 00:18:35 +0000 Subject: [PATCH] upstream: fix memory leak; Coverity CID 291848 with/ok dtucker@ OpenBSD-Commit-ID: 37f80cb5d075ead5a00ad1b74175684ab1156ff8 --- auth-options.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) 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