sp_read_radix_10: check _sp_add_d doesn't error due to overflow
_sp_add_d: Don't change value of used for result until it is known to be
valid.
pull/5044/head
Sean Parkinson 2022-04-12 08:53:16 +10:00
parent e87ded85b4
commit 55e13d40b3
1 changed files with 9 additions and 4 deletions

View File

@ -5219,11 +5219,13 @@ static int _sp_add_d(sp_int* a, sp_int_digit d, sp_int* r)
}
}
if (i == a->used) {
r->used++;
if (i < r->size)
if (i < r->size) {
r->used++;
r->dp[i] = 1;
else
}
else {
err = MP_VAL;
}
}
}
if (err == MP_OKAY) {
@ -14889,7 +14891,10 @@ static int _sp_read_radix_10(sp_int* a, const char* in)
if (err != MP_OKAY) {
break;
}
(void)_sp_add_d(a, ch, a);
err = _sp_add_d(a, ch, a);
if (err != MP_OKAY) {
break;
}
}
#ifdef WOLFSSL_SP_INT_NEGATIVE
if ((err == MP_OKAY) && sp_iszero(a)) {