summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2023-03-29 00:18:35 +0000
committerDarren Tucker <dtucker@dtucker.net>2023-03-29 12:22:23 +1100
commit13ae327eae598b1043e5ec30e4b170edb3c898a5 (patch)
tree544cea5ecd7756c5db2dadc085d5c93b32169eb2
parent9ffa76e1284c85bf459c3dcb8e995733a8967e1b (diff)
downloadopenssh-git-13ae327eae598b1043e5ec30e4b170edb3c898a5.tar.gz
upstream: fix memory leak; Coverity CID 291848
with/ok dtucker@ OpenBSD-Commit-ID: 37f80cb5d075ead5a00ad1b74175684ab1156ff8
-rw-r--r--auth-options.c21
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