From cd4075d54058eb0749880acac9f3d8af2c47b9ba Mon Sep 17 00:00:00 2001 From: tb <> Date: Tue, 17 Dec 2024 07:13:47 +0000 Subject: Plug two memory leaks in MLKEM*_generate_key_external_entropy() This needs more thinking. These are void functions that allocate... Left an XXX for now. From Kenjiro Nakayama --- src/lib/libcrypto/mlkem/mlkem1024.c | 4 +++- src/lib/libcrypto/mlkem/mlkem768.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/lib/libcrypto/mlkem/mlkem1024.c b/src/lib/libcrypto/mlkem/mlkem1024.c index e0a71f335b..a6256ece83 100644 --- a/src/lib/libcrypto/mlkem/mlkem1024.c +++ b/src/lib/libcrypto/mlkem/mlkem1024.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mlkem1024.c,v 1.1 2024/12/13 00:17:17 beck Exp $ */ +/* $OpenBSD: mlkem1024.c,v 1.2 2024/12/17 07:13:47 tb Exp $ */ /* * Copyright (c) 2024, Google Inc. * Copyright (c) 2024, Bob Beck <beck@obtuse.com> @@ -874,10 +874,12 @@ MLKEM1024_generate_key_external_entropy( matrix_mult_transpose(&priv->pub.t, &priv->pub.m, &priv->s); vector_add(&priv->pub.t, &error); + /* XXX - error checking. */ CBB_init_fixed(&cbb, out_encoded_public_key, MLKEM1024_PUBLIC_KEY_BYTES); if (!mlkem_marshal_public_key(&cbb, &priv->pub)) { abort(); } + CBB_cleanup(&cbb); hash_h(priv->pub.public_key_hash, out_encoded_public_key, MLKEM1024_PUBLIC_KEY_BYTES); diff --git a/src/lib/libcrypto/mlkem/mlkem768.c b/src/lib/libcrypto/mlkem/mlkem768.c index fed4704f87..daa026e2a3 100644 --- a/src/lib/libcrypto/mlkem/mlkem768.c +++ b/src/lib/libcrypto/mlkem/mlkem768.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mlkem768.c,v 1.2 2024/12/13 00:09:02 beck Exp $ */ +/* $OpenBSD: mlkem768.c,v 1.3 2024/12/17 07:13:47 tb Exp $ */ /* * Copyright (c) 2024, Google Inc. * Copyright (c) 2024, Bob Beck <beck@obtuse.com> @@ -873,10 +873,12 @@ MLKEM768_generate_key_external_entropy( matrix_mult_transpose(&priv->pub.t, &priv->pub.m, &priv->s); vector_add(&priv->pub.t, &error); + /* XXX - error checking */ CBB_init_fixed(&cbb, out_encoded_public_key, MLKEM768_PUBLIC_KEY_BYTES); if (!mlkem_marshal_public_key(&cbb, &priv->pub)) { abort(); } + CBB_cleanup(&cbb); hash_h(priv->pub.public_key_hash, out_encoded_public_key, MLKEM768_PUBLIC_KEY_BYTES); -- cgit v1.2.3-55-g6feb