diff options
author | tb <> | 2024-12-17 07:13:47 +0000 |
---|---|---|
committer | tb <> | 2024-12-17 07:13:47 +0000 |
commit | cd4075d54058eb0749880acac9f3d8af2c47b9ba (patch) | |
tree | b311cb7dce7e3370e50b780eb148e679be24e441 /src | |
parent | 1a40936cc553b1bae49e4ccf3cf9af38b5c5290d (diff) | |
download | openbsd-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.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/mlkem/mlkem768.c | 4 |
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); |