Make grub_zlib_decompress handle incomplete chunks.

Fixes squash4.
This commit is contained in:
Vladimir Serbinenko 2013-12-18 23:39:49 +01:00
parent 2984035e1a
commit 2e238b3708
5 changed files with 38 additions and 14 deletions

View file

@ -293,9 +293,13 @@ static grub_err_t
zlib_decompress (void *s, void *d,
grub_size_t slen, grub_size_t dlen)
{
if (grub_zlib_decompress (s, slen, 0, d, dlen) < 0)
return grub_errno;
return GRUB_ERR_NONE;
if (grub_zlib_decompress (s, slen, 0, d, dlen) == (grub_ssize_t) dlen)
return GRUB_ERR_NONE;
if (!grub_errno)
grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,
"premature end of compressed");
return grub_errno;
}
static grub_err_t