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:
|
||
---|---|---|
.. | ||
generic_mpih-add1.c | ||
generic_mpih-lshift.c | ||
generic_mpih-mul1.c | ||
generic_mpih-mul2.c | ||
generic_mpih-mul3.c | ||
generic_mpih-rshift.c | ||
generic_mpih-sub1.c | ||
longlong.h | ||
Makefile | ||
mpi-bit.c | ||
mpi-cmp.c | ||
mpi-inline.h | ||
mpi-internal.h | ||
mpi-pow.c | ||
mpicoder.c | ||
mpih-cmp.c | ||
mpih-div.c | ||
mpih-mul.c | ||
mpiutil.c |