From 02e51953fd00ff5194aa94ec2a43df766b8244b9 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Mon, 19 Sep 2022 09:26:47 +1000 Subject: [PATCH] SP int: mp_init_size fixes when SP_WORD_SIZE == 8 Setting an integer may have a value larger than one word being set. Check size of SP int in this case. --- wolfcrypt/src/sp_int.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c index 40ad95104..752f37cb3 100644 --- a/wolfcrypt/src/sp_int.c +++ b/wolfcrypt/src/sp_int.c @@ -5181,10 +5181,13 @@ int sp_set_int(sp_int* a, unsigned long n) else { int i; - for (i = 0; n > 0; i++,n >>= SP_WORD_SIZE) { + for (i = 0; (i < a->size) && (n > 0); i++,n >>= SP_WORD_SIZE) { a->dp[i] = (sp_int_digit)n; } a->used = i; + if ((i == a->size) && (n != 0)) { + err = MP_VAL; + } } #endif #ifdef WOLFSSL_SP_INT_NEGATIVE