mpi: Improve mpi_invm to detect bad input.
authorWerner Koch <wk@gnupg.org>
Thu, 11 Sep 2014 15:06:16 +0000 (17:06 +0200)
committerWerner Koch <wk@gnupg.org>
Thu, 11 Sep 2014 15:06:22 +0000 (17:06 +0200)
* mpi/mpi-inv.c (mpi_invm): Return 0 for bad input.
--

Without this patch the function may enter an endless loop.  This is a
backport from libgcrypt.

GnuPG-bug-id: 1713

mpi/mpi-inv.c

index b762630..361c57e 100644 (file)
@@ -165,6 +165,11 @@ mpi_invm( MPI x, MPI a, MPI n )
     int sign;
     int odd ;
 
+    if (!mpi_cmp_ui (a, 0))
+        return 0; /* Inverse does not exists.  */
+    if (!mpi_cmp_ui (n, 1))
+        return 0; /* Inverse does not exists.  */
+
     u = mpi_copy(a);
     v = mpi_copy(n);