Fix bug in _gcry_mpi_tdiv_q_2exp.
authorWerner Koch <wk@gnupg.org>
Sat, 7 Sep 2013 08:06:46 +0000 (10:06 +0200)
committerWerner Koch <wk@gnupg.org>
Mon, 16 Sep 2013 13:46:34 +0000 (15:46 +0200)
commita7a9cdcaaf3979baa18dad51e722882581349f45
treee4491c7fd6a35054238411385141714ca4cea5f4
parentbc5199a02abe428ad377443280b3eda60141a1d6
Fix bug in _gcry_mpi_tdiv_q_2exp.

* mpi/mpi-internal.h (MPN_COPY_INCR): Make it work.
--

This bug has been with us since the version 0.0.0 of GnuPG.
Fortunately it only affects an optimized code path which is rarely
used in practice: If the shift size matches the size of a
limb (i.e.. 32 or 64); this is is_prime in primegen.c.  Over there the
Rabin-Miller test may fail with a probability of 2^-31 (that is if the
to be tested prime - 1 has the low 32 bits cleared).  In practice the
probability is even much less because we first do a Fermat test on the
randomly generated candidates which sorts out the majority of
composite numbers.

The bug in MPN_COPY_INCR was found by Sven Bjorn.

Signed-off-by: Werner Koch <wk@gnupg.org>
THANKS
mpi/mpi-internal.h