From 1c1baaa755f8a45ff61d3f281fb6c0b801f79469 Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Thu, 12 Nov 2015 01:18:00 +0100 Subject: [PATCH] Don't cast the potential problems away, handle them appropriately --- bn_mp_div.c | 4 +++- bn_mp_dr_reduce.c | 4 +++- bn_mp_exteuclid.c | 6 +++--- bn_mp_reduce_2k.c | 4 +++- bn_mp_reduce_2k_l.c | 4 +++- bn_mp_toom_mul.c | 4 +++- bn_mp_toom_sqr.c | 4 +++- 7 files changed, 21 insertions(+), 9 deletions(-) diff --git a/bn_mp_div.c b/bn_mp_div.c index 3dc28c9..630f2dc 100644 --- a/bn_mp_div.c +++ b/bn_mp_div.c @@ -270,7 +270,9 @@ int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d) } if (d != NULL) { - (void)mp_div_2d (&x, norm, &x, NULL); + if ((res = mp_div_2d (&x, norm, &x, NULL)) != MP_OKAY) { + goto LBL_Y; + } mp_exch (&x, d); } diff --git a/bn_mp_dr_reduce.c b/bn_mp_dr_reduce.c index 62e9612..7cfe462 100644 --- a/bn_mp_dr_reduce.c +++ b/bn_mp_dr_reduce.c @@ -82,7 +82,9 @@ top: * Each successive "recursion" makes the input smaller and smaller. */ if (mp_cmp_mag (x, n) != MP_LT) { - (void)s_mp_sub(x, n, x); + if ((err = s_mp_sub(x, n, x)) != MP_OKAY) { + return err; + } goto top; } return MP_OKAY; diff --git a/bn_mp_exteuclid.c b/bn_mp_exteuclid.c index 3b0bb4a..624f81d 100644 --- a/bn_mp_exteuclid.c +++ b/bn_mp_exteuclid.c @@ -61,9 +61,9 @@ int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3) /* make sure U3 >= 0 */ if (u3.sign == MP_NEG) { - (void)mp_neg(&u1, &u1); - (void)mp_neg(&u2, &u2); - (void)mp_neg(&u3, &u3); + if ((err = mp_neg(&u1, &u1)) != MP_OKAY) { goto _ERR; } + if ((err = mp_neg(&u2, &u2)) != MP_OKAY) { goto _ERR; } + if ((err = mp_neg(&u3, &u3)) != MP_OKAY) { goto _ERR; } } /* copy result out */ diff --git a/bn_mp_reduce_2k.c b/bn_mp_reduce_2k.c index f03bc11..6abae6c 100644 --- a/bn_mp_reduce_2k.c +++ b/bn_mp_reduce_2k.c @@ -45,7 +45,9 @@ top: } if (mp_cmp_mag(a, n) != MP_LT) { - (void)s_mp_sub(a, n, a); + if ((res = s_mp_sub(a, n, a)) != MP_OKAY) { + goto ERR; + } goto top; } diff --git a/bn_mp_reduce_2k_l.c b/bn_mp_reduce_2k_l.c index 0ee5402..84198a3 100644 --- a/bn_mp_reduce_2k_l.c +++ b/bn_mp_reduce_2k_l.c @@ -46,7 +46,9 @@ top: } if (mp_cmp_mag(a, n) != MP_LT) { - (void)s_mp_sub(a, n, a); + if ((res = s_mp_sub(a, n, a)) != MP_OKAY) { + goto ERR; + } goto top; } diff --git a/bn_mp_toom_mul.c b/bn_mp_toom_mul.c index 81fec9f..e2a4ac8 100644 --- a/bn_mp_toom_mul.c +++ b/bn_mp_toom_mul.c @@ -46,7 +46,9 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c) goto ERR; } mp_rshd(&a1, B); - (void)mp_mod_2d(&a1, DIGIT_BIT * B, &a1); + if ((res = mp_mod_2d(&a1, DIGIT_BIT * B, &a1)) != MP_OKAY) { + goto ERR; + } if ((res = mp_copy(a, &a2)) != MP_OKAY) { goto ERR; diff --git a/bn_mp_toom_sqr.c b/bn_mp_toom_sqr.c index d2c096c..0fe967b 100644 --- a/bn_mp_toom_sqr.c +++ b/bn_mp_toom_sqr.c @@ -39,7 +39,9 @@ mp_toom_sqr(mp_int *a, mp_int *b) goto ERR; } mp_rshd(&a1, B); - (void)mp_mod_2d(&a1, DIGIT_BIT * B, &a1); + if ((res = mp_mod_2d(&a1, DIGIT_BIT * B, &a1)) != MP_OKAY) { + goto ERR; + } if ((res = mp_copy(a, &a2)) != MP_OKAY) { goto ERR;