linux/lib/mpi
Hongbo Li b6f756726e lib/mpi: use kcalloc in mpi_resize
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: cdec9cb516 ("crypto: GnuPG based MPI lib - source files (part 1)")
Signed-off-by: Hongbo Li <herberthbli@tencent.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2021-08-12 19:17:00 +08:00
..
ec.c lib/mpi: Remove unused scalar_copied 2020-10-30 17:34:45 +11:00
generic_mpih-add1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-lshift.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-mul1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-mul2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-mul3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-rshift.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-sub1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
longlong.h lib/mpi: fix spelling mistakes 2021-07-01 11:06:05 -07:00
Makefile lib/mpi: Introduce ec implementation to MPI library 2020-09-25 17:48:54 +10:00
mpi-add.c lib/mpi: Extend the MPI library 2020-09-25 17:48:53 +10:00
mpi-bit.c lib/mpi/mpi-bit.c: fix spello of "functions" 2020-10-16 11:11:20 -07:00
mpi-cmp.c lib/mpi: Extend the MPI library 2020-09-25 17:48:53 +10:00
mpi-div.c lib/mpi: Fix unused variable warnings 2020-10-02 18:02:13 +10:00
mpi-inline.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
mpi-internal.h lib/mpi: Fix unused variable warnings 2020-10-02 18:02:13 +10:00
mpi-inv.c lib/mpi: Extend the MPI library 2020-09-25 17:48:53 +10:00
mpi-mod.c lib/mpi: Extend the MPI library 2020-09-25 17:48:53 +10:00
mpi-mul.c lib/mpi: Fix unused variable warnings 2020-10-02 18:02:13 +10:00
mpi-pow.c Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2019-07-05 13:31:19 +09:00
mpi-sub-ui.c lib/mpi: Add mpi_sub_ui() 2020-07-31 18:08:59 +10:00
mpicoder.c lib/mpi: fix spelling mistakes 2021-07-01 11:06:05 -07:00
mpih-cmp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
mpih-div.c lib/mpi: Fix unused variable warnings 2020-10-02 18:02:13 +10:00
mpih-mul.c lib/mpi: Extend the MPI library 2020-09-25 17:48:53 +10:00
mpiutil.c lib/mpi: use kcalloc in mpi_resize 2021-08-12 19:17:00 +08:00