]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: jws: fix memory leak in jws_b64_signature
authorMia Kanashi <chad@redpilled.dev>
Thu, 5 Mar 2026 16:08:32 +0000 (18:08 +0200)
committerWilliam Lallemand <wlallemand@haproxy.com>
Thu, 12 Mar 2026 08:18:42 +0000 (09:18 +0100)
EVP_MD_CTX is allocated using EVP_MD_CTX_new() but was never freed.
ctx should be initialized to NULL otherwise EVP_MD_CTX_free(ctx) could
segfault.

Must be backported as far as 3.2.

src/jws.c

index d83ce9b969eab949594a2aeb10416abc938b705f..7a4d83e6fae2e0098fde79fa13a26f45edb682e2 100644 (file)
--- a/src/jws.c
+++ b/src/jws.c
@@ -356,7 +356,7 @@ out:
  */
 size_t jws_b64_signature(EVP_PKEY *pkey, enum jwt_alg alg, char *b64protected, char *b64payload, char *dst, size_t dsize)
 {
-       EVP_MD_CTX *ctx;
+       EVP_MD_CTX *ctx = NULL;
        const EVP_MD *evp_md = NULL;
        int ret = 0;
        struct buffer *sign = NULL;
@@ -450,6 +450,7 @@ size_t jws_b64_signature(EVP_PKEY *pkey, enum jwt_alg alg, char *b64protected, c
        ret = a2base64url(sign->area, sign->data, dst, dsize);
 
 out:
+       EVP_MD_CTX_free(ctx);
        free_trash_chunk(sign);
 
        if (ret > 0)