mpi: Improve gcry_mpi_invm to detect bad input.
authorWerner Koch <wk@gnupg.org>
Mon, 5 Aug 2013 16:58:41 +0000 (18:58 +0200)
committerWerner Koch <wk@gnupg.org>
Mon, 5 Aug 2013 16:58:41 +0000 (18:58 +0200)
* mpi/mpi-inv.c (gcry_mpi_invm): Return 0 for bad input.
--

Without this patch the function may enter and endless loop.

Signed-off-by: Werner Koch <wk@gnupg.org>
mpi/mpi-inv.c

index 5d26946..15fa58f 100644 (file)
@@ -165,6 +165,11 @@ gcry_mpi_invm( gcry_mpi_t x, gcry_mpi_t a, gcry_mpi_t 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);