Fix a special case bug in mpi_powm for e==0.
authorWerner Koch <wk@gnupg.org>
Wed, 17 Jul 2013 08:18:39 +0000 (10:18 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 17 Jul 2013 08:18:39 +0000 (10:18 +0200)
commit6e1adb05d290aeeb1c230c763970695f4a538526
treeb599d80d243bf9a26f261d1436532233e6f67e75
parent61b44812728d1feca880a613c685040ba82c05ce
Fix a special case bug in mpi_powm for e==0.

* mpi/mpi-pow.c (gcry_mpi_powm): For a zero exponent, make sure that
the result has been allocated.
--

This code triggered the problem:

    modulus = gcry_mpi_set_ui(NULL, 100);
    generator = gcry_mpi_set_ui(NULL, 3);
    exponent = gcry_mpi_set_ui(NULL, 0);
    result = gcry_mpi_new(0);
    gcry_mpi_powm(result, generator, exponent, modulus);

gcry_mpi_new(0) does not allocate the limb space thus it is not
possible to write even into the first limb.  Workaround was to use
gcry_mpi_new (1) but a real fix is better.

Reported-by: Ian Goldberg
Signed-off-by: Werner Koch <wk@gnupg.org>
mpi/mpi-pow.c