]> git.feebdaed.xyz Git - 0xmirror/openssh-portable.git/commitdiff
upstream: Plug leak in ssh_digest_memory on error path.
authordtucker@openbsd.org <dtucker@openbsd.org>
Tue, 16 Dec 2025 08:36:43 +0000 (08:36 +0000)
committerDarren Tucker <dtucker@dtucker.net>
Tue, 16 Dec 2025 09:41:22 +0000 (20:41 +1100)
Bonehead mistake spotted by otto@, ok djm@

OpenBSD-Commit-ID: 4ad67ac402e0b4c013f4f4e386d22b88969a5dd7

digest-libc.c

index b187bc9faf2c6d7b19063dc7fe1ed2995f29a47d..6e62af7f227e62ca32b5765dab57b1f2e39d8562 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: digest-libc.c,v 1.8 2025/09/05 09:31:31 dtucker Exp $ */
+/* $OpenBSD: digest-libc.c,v 1.9 2025/12/16 08:36:43 dtucker Exp $ */
 /*
  * Copyright (c) 2013 Damien Miller <djm@mindrot.org>
  * Copyright (c) 2014 Markus Friedl.  All rights reserved.
@@ -248,14 +248,15 @@ int
 ssh_digest_memory(int alg, const void *m, size_t mlen, u_char *d, size_t dlen)
 {
        struct ssh_digest_ctx *ctx = ssh_digest_start(alg);
+       int ret = 0;
 
        if (ctx == NULL)
                return SSH_ERR_INVALID_ARGUMENT;
        if (ssh_digest_update(ctx, m, mlen) != 0 ||
            ssh_digest_final(ctx, d, dlen) != 0)
-               return SSH_ERR_INVALID_ARGUMENT;
+               ret = SSH_ERR_INVALID_ARGUMENT;
        ssh_digest_free(ctx);
-       return 0;
+       return ret;
 }
 
 int