| Index: nss/lib/freebl/mpi/mpi.c
|
| diff --git a/nss/lib/freebl/mpi/mpi.c b/nss/lib/freebl/mpi/mpi.c
|
| index 84f9b97b63ea408c8a85ddd52b38b88ba12863f3..ac19ead44c885e476ba1fac15c9bf56caa7aba85 100644
|
| --- a/nss/lib/freebl/mpi/mpi.c
|
| +++ b/nss/lib/freebl/mpi/mpi.c
|
| @@ -1336,7 +1336,7 @@ mp_err mp_sqrt(const mp_int *a, mp_int *b)
|
| }
|
|
|
| /* Copy result to output parameter */
|
| - mp_sub_d(&x, 1, &x);
|
| + MP_CHECKOK(mp_sub_d(&x, 1, &x));
|
| s_mp_exch(&x, b);
|
|
|
| CLEANUP:
|
| @@ -2959,8 +2959,12 @@ mp_err s_mp_mul_2d(mp_int *mp, mp_digit d)
|
| dshift = d / MP_DIGIT_BIT;
|
| bshift = d % MP_DIGIT_BIT;
|
| /* bits to be shifted out of the top word */
|
| - mask = ((mp_digit)~0 << (MP_DIGIT_BIT - bshift));
|
| - mask &= MP_DIGIT(mp, MP_USED(mp) - 1);
|
| + if (bshift) {
|
| + mask = (mp_digit)~0 << (MP_DIGIT_BIT - bshift);
|
| + mask &= MP_DIGIT(mp, MP_USED(mp) - 1);
|
| + } else {
|
| + mask = 0;
|
| + }
|
|
|
| if (MP_OKAY != (res = s_mp_pad(mp, MP_USED(mp) + dshift + (mask != 0) )))
|
| return res;
|
|
|