[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcrypt-devel
Subject:    [PATCH] Fix Kyber segfaulting on Win64
From:       Jussi Kivilinna <jussi.kivilinna () iki ! fi>
Date:       2024-02-04 19:35:08
Message-ID: 20240204193508.2372873-2-jussi.kivilinna () iki ! fi
[Download RAW message or body]

* cipher/kyber.c (prg, pkprf): Cast variadic parameters to expected
types ('void *' and 'size_t').
--

Mismatch of variadic parameter integer types (int vs size_t) caused
shake256v to segfault on Win64.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
---
 cipher/kyber.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/cipher/kyber.c b/cipher/kyber.c
index 1018cde6..c93ab812 100644
--- a/cipher/kyber.c
+++ b/cipher/kyber.c
@@ -381,8 +381,14 @@ static void kyber_shake128_absorb (keccak_state *state,
 #define xof_close(STATE) shake128_close(STATE)
 #define xof_absorb(STATE, SEED, X, Y) kyber_shake128_absorb(STATE, SEED, X, Y)
 #define xof_squeezeblocks(OUT, OUTBLOCKS, STATE) shake128_squeeze(STATE, OUT, \
                SHAKE128_RATE * OUTBLOCKS)
-#define prf(OUT, OUTBYTES, KEY, NONCE) shake256v(OUT, OUTBYTES, KEY, KYBER_SYMBYTES, \
                &nonce, 1, NULL, 0)
-#define rkprf(OUT, KEY, INPUT) shake256v(OUT, KYBER_SSBYTES, KEY, KYBER_SYMBYTES, \
INPUT, KYBER_CIPHERTEXTBYTES, NULL, 0) +#define prf(OUT, OUTBYTES, KEY, NONCE) \
+  shake256v(OUT, OUTBYTES, (void *)(KEY), (size_t)KYBER_SYMBYTES, \
+			   (void *)&(NONCE), (size_t)1, \
+			   NULL, (size_t)0)
+#define rkprf(OUT, KEY, INPUT) \
+  shake256v(OUT, KYBER_SSBYTES, (void *)(KEY), (size_t)KYBER_SYMBYTES, \
+				(void *)(INPUT), (size_t)KYBER_CIPHERTEXTBYTES, \
+				NULL, (size_t)0)
 
 #include "kyber-common.c"
 
-- 
2.40.1


_______________________________________________
Gcrypt-devel mailing list
Gcrypt-devel@gnupg.org
https://lists.gnupg.org/mailman/listinfo/gcrypt-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic