forked from wolfSSL/wolfssl
wolfcrypt/src/sp_int.c: catch and propagate errors from sp_init_size() in sp_invmod() and sp_gcd() to fix clang-analyzer-core.UndefinedBinaryOperatorResult.
This commit is contained in:
@@ -10600,11 +10600,16 @@ int sp_invmod(sp_int* a, sp_int* m, sp_int* r)
|
|||||||
else if (err != MP_OKAY) {
|
else if (err != MP_OKAY) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sp_init_size(u, m->used + 1);
|
err = sp_init_size(u, m->used + 1);
|
||||||
sp_init_size(v, m->used + 1);
|
if (err == MP_OKAY)
|
||||||
sp_init_size(b, m->used + 1);
|
err = sp_init_size(v, m->used + 1);
|
||||||
sp_init_size(c, 2 * m->used + 1);
|
if (err == MP_OKAY)
|
||||||
|
err = sp_init_size(b, m->used + 1);
|
||||||
|
if (err == MP_OKAY)
|
||||||
|
err = sp_init_size(c, 2 * m->used + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((err == MP_OKAY) && !sp_isone(a)) {
|
||||||
if (sp_iseven(m)) {
|
if (sp_iseven(m)) {
|
||||||
/* a^-1 mod m = m + ((1 - m*(m^-1 % a)) / a) */
|
/* a^-1 mod m = m + ((1 - m*(m^-1 % a)) / a) */
|
||||||
mm = a;
|
mm = a;
|
||||||
@@ -16363,10 +16368,14 @@ int sp_gcd(sp_int* a, sp_int* b, sp_int* r)
|
|||||||
u = d[0];
|
u = d[0];
|
||||||
v = d[1];
|
v = d[1];
|
||||||
t = d[2];
|
t = d[2];
|
||||||
sp_init_size(u, used);
|
err = sp_init_size(u, used);
|
||||||
sp_init_size(v, used);
|
}
|
||||||
sp_init_size(t, used);
|
if (err == MP_OKAY)
|
||||||
|
err = sp_init_size(v, used);
|
||||||
|
if (err == MP_OKAY)
|
||||||
|
err = sp_init_size(t, used);
|
||||||
|
|
||||||
|
if (err == MP_OKAY) {
|
||||||
if (_sp_cmp(a, b) != MP_LT) {
|
if (_sp_cmp(a, b) != MP_LT) {
|
||||||
sp_copy(b, u);
|
sp_copy(b, u);
|
||||||
/* First iteration - u = a, v = b */
|
/* First iteration - u = a, v = b */
|
||||||
|
Reference in New Issue
Block a user