diff options
author | Werner Koch <wk@gnupg.org> | 2013-08-05 18:58:41 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2013-08-05 18:58:41 +0200 |
commit | d8e99a04dba6a606e879464cd11deee760d1e000 (patch) | |
tree | bd5b967887f40e6860561058c34756372c04684e /mpi | |
parent | 10dfa41b43a906031bc674ea41cd3073701011f3 (diff) | |
download | libgcrypt-d8e99a04dba6a606e879464cd11deee760d1e000.tar.gz |
mpi: Improve gcry_mpi_invm to detect bad input.
* 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>
Diffstat (limited to 'mpi')
-rw-r--r-- | mpi/mpi-inv.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mpi/mpi-inv.c b/mpi/mpi-inv.c index 5d269466..15fa58ff 100644 --- a/mpi/mpi-inv.c +++ b/mpi/mpi-inv.c @@ -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); |