diff options
Diffstat (limited to 'mpi')
-rw-r--r-- | mpi/ChangeLog | 5 | ||||
-rw-r--r-- | mpi/mpi-bit.c | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/mpi/ChangeLog b/mpi/ChangeLog index 176ccf22..c670967e 100644 --- a/mpi/ChangeLog +++ b/mpi/ChangeLog @@ -1,3 +1,8 @@ +2006-08-25 Werner Koch <wk@g10code.com> + + * mpi-bit.c (gcry_mpi_rshift): Don't shift if N == 0 but do a + plain copy. + 2006-08-04 Werner Koch <wk@g10code.com> * mpi-bit.c (gcry_mpi_rshift): Rewritten to remove the limitation diff --git a/mpi/mpi-bit.c b/mpi/mpi-bit.c index d16eaae1..fe4895dc 100644 --- a/mpi/mpi-bit.c +++ b/mpi/mpi-bit.c @@ -256,7 +256,17 @@ gcry_mpi_rshift ( gcry_mpi_t x, gcry_mpi_t a, unsigned int n ) x->nlimbs = xsize; if ( xsize ) - _gcry_mpih_rshift (x->d, a->d, x->nlimbs, nbits ); + { + if (nbits ) + _gcry_mpih_rshift (x->d, a->d, x->nlimbs, nbits ); + else + { + /* The rshift helper function is not specified for + NBITS==0, thus we do a plain copy here. */ + for (i=0; i < x->nlimbs; i++ ) + x->d[i] = a->d[i]; + } + } } MPN_NORMALIZE (x->d, x->nlimbs); } |