summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2015-11-25 12:13:04 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2015-11-25 12:13:04 +0900
commitf88adee3e1f3e2de7d63f92f90bfb3078afd3b4f (patch)
treed409870b7fe3ca8f3aaef3507a748a50a30946d4
parent8ad682c412047d3b9196950709dbd7bd14ac8732 (diff)
downloadlibgcrypt-f88adee3e1f3e2de7d63f92f90bfb3078afd3b4f.tar.gz
mpi: fix gcry_mpi_swap_cond.
* mpi/mpiutil.c (_gcry_mpi_swap_cond): Relax the condition.
-rw-r--r--mpi/mpiutil.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/mpi/mpiutil.c b/mpi/mpiutil.c
index d3264c72..99402b82 100644
--- a/mpi/mpiutil.c
+++ b/mpi/mpiutil.c
@@ -582,11 +582,15 @@ void
_gcry_mpi_swap_cond (gcry_mpi_t a, gcry_mpi_t b, unsigned long swap)
{
mpi_size_t i;
- mpi_size_t nlimbs = a->alloced;
+ mpi_size_t nlimbs;
mpi_limb_t mask = ((mpi_limb_t)0) - swap;
mpi_limb_t x;
- if (a->alloced != b->alloced)
+ if (a->alloced > b->alloced)
+ nlimbs = b->alloced;
+ else
+ nlimbs = a->alloced;
+ if (a->nlimbs > nlimbs || b->nlimbs > nlimbs)
log_bug ("mpi_swap_cond: different sizes\n");
for (i = 0; i < nlimbs; i++)