android_kernel_oneplus_msm8998/lib/mpi
Nicolai Stange 11c27e850d lib/mpi: mpi_write_sgl(): fix skipping of leading zero limbs
commit f2d1362ff7d266b3d2b1c764d6c2ef4a3b457f23 upstream.

Currently, if the number of leading zeros is greater than fits into a
complete limb, mpi_write_sgl() skips them by iterating over them limb-wise.

However, it fails to adjust its internal leading zeros tracking variable,
lzeros, accordingly: it does a

  p -= sizeof(alimb);
  continue;

which should really have been a

  lzeros -= sizeof(alimb);
  continue;

Since lzeros never decreases if its initial value >= sizeof(alimb), nothing
gets copied by mpi_write_sgl() in that case.

Instead of skipping the high order zero limbs within the loop as shown
above, fix the issue by adjusting the copying loop's bounds.

Fixes: 2d4d1eea54 ("lib/mpi: Add mpi sgl helpers")
Signed-off-by: Nicolai Stange <nicstange@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-09-15 08:27:54 +02:00
..
generic_mpih-add1.c crypto: GnuPG based MPI lib - source files (part 1) 2011-11-09 11:45:22 +02:00
generic_mpih-lshift.c crypto: GnuPG based MPI lib - source files (part 1) 2011-11-09 11:45:22 +02:00
generic_mpih-mul1.c crypto: GnuPG based MPI lib - source files (part 1) 2011-11-09 11:45:22 +02:00
generic_mpih-mul2.c crypto: GnuPG based MPI lib - source files (part 1) 2011-11-09 11:45:22 +02:00
generic_mpih-mul3.c crypto: GnuPG based MPI lib - source files (part 1) 2011-11-09 11:45:22 +02:00
generic_mpih-rshift.c crypto: GnuPG based MPI lib - source files (part 1) 2011-11-09 11:45:22 +02:00
generic_mpih-sub1.c crypto: GnuPG based MPI lib - source files (part 1) 2011-11-09 11:45:22 +02:00
longlong.h move count_zeroes.h out of asm-generic 2015-10-15 00:21:07 +02:00
Makefile MPILIB: Reinstate mpi_cmp[_ui]() and export for RSA signature verification 2012-10-08 13:50:15 +10:30
mpi-bit.c MPILIB: Provide count_leading/trailing_zeros() based on arch functions 2012-10-08 13:50:11 +10:30
mpi-cmp.c MPILIB: Fix comparison of negative MPIs 2015-01-14 16:10:12 +00:00
mpi-inline.h crypto: GnuPG based MPI lib - header files (part 2) 2011-11-09 11:45:26 +02:00
mpi-internal.h MPILIB: Fix obvious but harmless typo 2015-01-14 15:16:00 +00:00
mpi-pow.c MPILIB: Provide count_leading/trailing_zeros() based on arch functions 2012-10-08 13:50:11 +10:30
mpicoder.c lib/mpi: mpi_write_sgl(): fix skipping of leading zero limbs 2016-09-15 08:27:54 +02:00
mpih-cmp.c crypto: GnuPG based MPI lib - source files (part 1) 2011-11-09 11:45:22 +02:00
mpih-div.c Remove unused code from MPI library 2012-05-26 11:51:03 +10:00
mpih-mul.c Remove unused code from MPI library 2012-05-26 11:51:03 +10:00
mpiutil.c MPILIB: add mpi_read_buf() and mpi_get_size() helpers 2015-06-16 14:35:06 +08:00