Decompressors: check for write errors in unlzo.c From: Lasse Collin The return value of flush() is not checked in unlzo(). This means that the decompressor won't stop even if the caller doesn't want more data. This can happen e.g. with a corrupt LZO-compressed initramfs image. Signed-off-by: Lasse Collin Signed-off-by: Jan Beulich --- a/xen/common/unlzo.c +++ b/xen/common/unlzo.c @@ -202,8 +202,8 @@ STATIC int INIT unlzo(u8 *input, unsigne } } - if (flush) - flush(out_buf, dst_len); + if (flush && flush(out_buf, dst_len) != dst_len) + goto exit_2; if (output) out_buf += dst_len; if (posp)