Re: [PATCH 2/2] MPI: Fix mpi_powm() when exponent is 0 and the result has no limbs

From: Andrey Ryabinin
Date: Thu Nov 24 2016 - 07:28:29 EST


2016-11-24 14:33 GMT+03:00 David Howells <dhowells@xxxxxxxxxx>:
> Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx> wrote:
>
>> > David Howells <dhowells@xxxxxxxxxx> wrote:
>> >
>> >> + if (!rp) {
>> >> + if (mpi_resize(res, 1) < 0)
>> >
>> > This is better done with RESIZE_IF_NEEDED().
>> >
>>
>> mpi_resize() is equal to RESIZE_IF_NEEDED(), it also checks for allocated space:
>>
>> int mpi_resize(MPI a, unsigned nlimbs)
>> {
>> ....
>> if (nlimbs <= a->alloced)
>> return 0; /* no need to do it */
>
> Hmmm... In that case, should your patch use mpi_resize() rather than
> RESIZE_IF_NEEDED()? It's a trivial case that we should perhaps weed out much
> earlier (ie. reject the key if exp<2 or mod<2), but it would make the object
> file slightly smaller not to do the test twice.
>

Right, it could be mpi_resize(). I realized that these two functions
do the exactly the same thing only after I send the patch.
We could even remove RESIZE_IF_NEEDED() to not confuse people, because
currently it has no users.

> David