summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2024-12-17 07:13:47 +0000
committertb <>2024-12-17 07:13:47 +0000
commitcd4075d54058eb0749880acac9f3d8af2c47b9ba (patch)
treeb311cb7dce7e3370e50b780eb148e679be24e441 /src
parent1a40936cc553b1bae49e4ccf3cf9af38b5c5290d (diff)
downloadopenbsd-cd4075d54058eb0749880acac9f3d8af2c47b9ba.tar.gz
openbsd-cd4075d54058eb0749880acac9f3d8af2c47b9ba.tar.bz2
openbsd-cd4075d54058eb0749880acac9f3d8af2c47b9ba.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/mlkem/mlkem1024.c4
-rw-r--r--src/lib/libcrypto/mlkem/mlkem768.c4
2 files changed, 6 insertions, 2 deletions
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 @@
1/* $OpenBSD: mlkem1024.c,v 1.1 2024/12/13 00:17:17 beck Exp $ */ 1/* $OpenBSD: mlkem1024.c,v 1.2 2024/12/17 07:13:47 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2024, Google Inc. 3 * Copyright (c) 2024, Google Inc.
4 * Copyright (c) 2024, Bob Beck <beck@obtuse.com> 4 * Copyright (c) 2024, Bob Beck <beck@obtuse.com>
@@ -874,10 +874,12 @@ MLKEM1024_generate_key_external_entropy(
874 matrix_mult_transpose(&priv->pub.t, &priv->pub.m, &priv->s); 874 matrix_mult_transpose(&priv->pub.t, &priv->pub.m, &priv->s);
875 vector_add(&priv->pub.t, &error); 875 vector_add(&priv->pub.t, &error);
876 876
877 /* XXX - error checking. */
877 CBB_init_fixed(&cbb, out_encoded_public_key, MLKEM1024_PUBLIC_KEY_BYTES); 878 CBB_init_fixed(&cbb, out_encoded_public_key, MLKEM1024_PUBLIC_KEY_BYTES);
878 if (!mlkem_marshal_public_key(&cbb, &priv->pub)) { 879 if (!mlkem_marshal_public_key(&cbb, &priv->pub)) {
879 abort(); 880 abort();
880 } 881 }
882 CBB_cleanup(&cbb);
881 883
882 hash_h(priv->pub.public_key_hash, out_encoded_public_key, 884 hash_h(priv->pub.public_key_hash, out_encoded_public_key,
883 MLKEM1024_PUBLIC_KEY_BYTES); 885 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 @@
1/* $OpenBSD: mlkem768.c,v 1.2 2024/12/13 00:09:02 beck Exp $ */ 1/* $OpenBSD: mlkem768.c,v 1.3 2024/12/17 07:13:47 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2024, Google Inc. 3 * Copyright (c) 2024, Google Inc.
4 * Copyright (c) 2024, Bob Beck <beck@obtuse.com> 4 * Copyright (c) 2024, Bob Beck <beck@obtuse.com>
@@ -873,10 +873,12 @@ MLKEM768_generate_key_external_entropy(
873 matrix_mult_transpose(&priv->pub.t, &priv->pub.m, &priv->s); 873 matrix_mult_transpose(&priv->pub.t, &priv->pub.m, &priv->s);
874 vector_add(&priv->pub.t, &error); 874 vector_add(&priv->pub.t, &error);
875 875
876 /* XXX - error checking */
876 CBB_init_fixed(&cbb, out_encoded_public_key, MLKEM768_PUBLIC_KEY_BYTES); 877 CBB_init_fixed(&cbb, out_encoded_public_key, MLKEM768_PUBLIC_KEY_BYTES);
877 if (!mlkem_marshal_public_key(&cbb, &priv->pub)) { 878 if (!mlkem_marshal_public_key(&cbb, &priv->pub)) {
878 abort(); 879 abort();
879 } 880 }
881 CBB_cleanup(&cbb);
880 882
881 hash_h(priv->pub.public_key_hash, out_encoded_public_key, 883 hash_h(priv->pub.public_key_hash, out_encoded_public_key,
882 MLKEM768_PUBLIC_KEY_BYTES); 884 MLKEM768_PUBLIC_KEY_BYTES);