[zbin] Fix check for existence of most recent output byte
authorMichael Brown <mcb30@ipxe.org>
Thu, 26 Feb 2015 13:01:55 +0000 (13:01 +0000)
committerMichael Brown <mcb30@ipxe.org>
Thu, 26 Feb 2015 13:01:55 +0000 (13:01 +0000)
commitea3be0f4a65f2d7e8b16b9cdef89fe93f28d7008
tree4996dd41402a994f9c55b7ff50787cdd86131aa2
parentc11306e6ca2ece03682f06741caf5661f4996f10
[zbin] Fix check for existence of most recent output byte

The code in lzma_literal() checks to see if we are at the start of the
compressed input data in order to determine whether or not a most
recent output byte exists.  This check is incorrect, since
initialisation of the decompressor will always consume the first five
bytes of the compressed input data.

Fix by instead checking whether or not we are at the start of the
output data stream.  This is, in any case, a more logical check.

This issue was masked during development and testing since virtual
machines tend to zero the initial contents of RAM; the spuriously-read
"most recent output byte" is therefore likely to already be a zero
when running in a virtual machine.

Reported-by: Robin Smidsrød <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/i386/prefix/unlzma.S