liblzma: Fix handling of memlimit == 0 in lzma_index_decoder().
commit57616032650f03840480b696d7878acdd2065521
authorLasse Collin <lasse.collin@tukaani.org>
Thu, 30 Mar 2017 15:58:18 +0000 (30 18:58 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Thu, 30 Mar 2017 16:52:24 +0000 (30 19:52 +0300)
tree4f3ab2f7730720cd248b82d638ba1de7abf4b611
parent3d566cd519017eee1a400e7961ff14058dfaf33c
liblzma: Fix handling of memlimit == 0 in lzma_index_decoder().

It returned LZMA_PROG_ERROR, which was done to avoid zero as
the limit (because it's a special value elsewhere), but using
LZMA_PROG_ERROR is simply inconvenient and can cause bugs.

The fix/workaround is to treat 0 as if it were 1 byte. It's
effectively the same thing. The only weird consequence is
that then lzma_memlimit_get() will return 1 even when 0 was
specified as the limit.

This fixes a very rare corner case in xz --list where a specific
memory usage limit and a multi-stream file could print the
error message "Internal error (bug)" instead of saying that
the memory usage limit is too low.
src/liblzma/api/lzma/index.h
src/liblzma/common/index_decoder.c