diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2020-02-12 20:14:44 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2020-02-12 20:14:44 +0100 |
commit | ad5f51a7dcf6f2cb380f1fd112f8d06438779fd3 (patch) | |
tree | 9f0d96c4763694af8d1f219c125828c9e393eb76 /mpz/cmp.c | |
parent | 17f337cee40f1890a1e07521234ea5965cc54e6e (diff) | |
download | gmp-ad5f51a7dcf6f2cb380f1fd112f8d06438779fd3.tar.gz |
mpz/cmp{,abs}.c: Avoid any overflow.
Diffstat (limited to 'mpz/cmp.c')
-rw-r--r-- | mpz/cmp.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -35,15 +35,15 @@ see https://www.gnu.org/licenses/. */ int mpz_cmp (mpz_srcptr u, mpz_srcptr v) __GMP_NOTHROW { - mp_size_t usize, vsize, dsize, asize; + mp_size_t usize, vsize, asize; mp_srcptr up, vp; int cmp; usize = SIZ(u); vsize = SIZ(v); - dsize = usize - vsize; - if (dsize != 0) - return dsize; + /* Cannot use usize - vsize, may overflow an "int" */ + if (usize != vsize) + return (usize > vsize) ? 1 : -1; asize = ABS (usize); up = PTR(u); |