Re: [PATCH] lib/mpi: use kcalloc in mpi_resize

From: Herbert Xu
Date: Thu Aug 12 2021 - 07:36:51 EST


On Thu, Aug 05, 2021 at 04:53:32PM +0800, Hongbo Li wrote:
> From: Hongbo Li <herberthbli@xxxxxxxxxxx>
>
> We should set the additional space to 0 in mpi_resize().
> So use kcalloc() instead of kmalloc_array().
>
> In lib/mpi/ec.c:
> /****************
> * Resize the array of A to NLIMBS. the additional space is cleared
> * (set to 0) [done by m_realloc()]
> */
> int mpi_resize(MPI a, unsigned nlimbs)
>
> Like the comment of kernel's mpi_resize() said, the additional space
> need to be set to 0, but when a->d is not NULL, it does not set.
>
> The kernel's mpi lib is from libgcrypt, the mpi resize in libgcrypt
> is _gcry_mpi_resize() which set the additional space to 0.
>
> This bug may cause mpi api which use mpi_resize() get wrong result
> under the condition of using the additional space without initiation.
> If this condition is not met, the bug would not be triggered.
> Currently in kernel, rsa, sm2 and dh use mpi lib, and they works well,
> so the bug is not triggered in these cases.
>
> add_points_edwards() use the additional space directly, so it will
> get a wrong result.
>
> Fixes: cdec9cb5167a ("crypto: GnuPG based MPI lib - source files (part 1)")
> Signed-off-by: Hongbo Li <herberthbli@xxxxxxxxxxx>
> ---
> lib/mpi/mpiutil.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Patch applied. Thanks.
--
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt