lib/mpi: mpi_write_sgl(): fix skipping of leading zero limbs
authorNicolai Stange <nicstange@gmail.com>
Tue, 22 Mar 2016 12:12:35 +0000 (13:12 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2016 06:27:54 +0000 (08:27 +0200)
commit11c27e850d90372d79c1337be299923b5fb353e8
tree068c6da3a091106169bf63ed1e472a165adf7c21
parent3838b04f6d5868f5ec5ee52ce1391b6253c6ce16
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: 2d4d1eea540b ("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>
lib/mpi/mpicoder.c