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 {
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