summaryrefslogtreecommitdiff
path: root/mpi
diff options
context:
space:
mode:
Diffstat (limited to 'mpi')
-rw-r--r--mpi/ChangeLog5
-rw-r--r--mpi/mpi-bit.c12
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);
}