Integrate OpenSSL changeset 22950 (appro):
bn_word.c: fix overflow bug in BN_add_word.
This commit is contained in:
parent
0758ab5ea7
commit
451758c611
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor-crypto/openssl/dist/; revision=244973
@ -144,26 +144,17 @@ int BN_add_word(BIGNUM *a, BN_ULONG w)
|
|||||||
a->neg=!(a->neg);
|
a->neg=!(a->neg);
|
||||||
return(i);
|
return(i);
|
||||||
}
|
}
|
||||||
/* Only expand (and risk failing) if it's possibly necessary */
|
for (i=0;w!=0 && i<a->top;i++)
|
||||||
if (((BN_ULONG)(a->d[a->top - 1] + 1) == 0) &&
|
|
||||||
(bn_wexpand(a,a->top+1) == NULL))
|
|
||||||
return(0);
|
|
||||||
i=0;
|
|
||||||
for (;;)
|
|
||||||
{
|
{
|
||||||
if (i >= a->top)
|
a->d[i] = l = (a->d[i]+w)&BN_MASK2;
|
||||||
l=w;
|
w = (w>l)?1:0;
|
||||||
else
|
|
||||||
l=(a->d[i]+w)&BN_MASK2;
|
|
||||||
a->d[i]=l;
|
|
||||||
if (w > l)
|
|
||||||
w=1;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
if (i >= a->top)
|
if (w && i==a->top)
|
||||||
|
{
|
||||||
|
if (bn_wexpand(a,a->top+1) == NULL) return 0;
|
||||||
a->top++;
|
a->top++;
|
||||||
|
a->d[i]=w;
|
||||||
|
}
|
||||||
bn_check_top(a);
|
bn_check_top(a);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user