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.
This commit is contained in:
Sean Parkinson
2022-09-19 09:26:47 +10:00
parent e43a7843b6
commit 02e51953fd

View File

@ -5181,10 +5181,13 @@ int sp_set_int(sp_int* a, unsigned long n)
else { else {
int i; 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->dp[i] = (sp_int_digit)n;
} }
a->used = i; a->used = i;
if ((i == a->size) && (n != 0)) {
err = MP_VAL;
}
} }
#endif #endif
#ifdef WOLFSSL_SP_INT_NEGATIVE #ifdef WOLFSSL_SP_INT_NEGATIVE