From 44c640207701abef76d8e49a8659f001e1d159be Mon Sep 17 00:00:00 2001 From: djm Date: Wed, 29 Mar 2023 00:18:35 +0000 Subject: [PATCH] fix memory leak; Coverity CID 291848, with/ok dtucker@ --- usr.bin/ssh/auth-options.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/usr.bin/ssh/auth-options.c b/usr.bin/ssh/auth-options.c index eda5466c918..177a221f118 100644 --- a/usr.bin/ssh/auth-options.c +++ b/usr.bin/ssh/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 * @@ -700,7 +700,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; @@ -709,18 +709,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 -- 2.20.1