From dd35e1b9cdb4b8abf0ffd15263ae33db3e729d75 Mon Sep 17 00:00:00 2001 From: John Hiesey Date: Wed, 7 Oct 2015 13:30:33 -0700 Subject: static-delta: Handle LZMA_BUF_ERROR returned by zlib zlib can return LZMA_BUF_ERROR, which indicates that either the input or output buffer has size zero. This case should cause the correct error to be passed back from g_converter_convert to expand the relevant buffer. Since this error is ambiguous as to which buffer is too small, an explicit check on the output buffer size is added as well. https://bugzilla.gnome.org/show_bug.cgi?id=756260 --- src/libostree/ostree-lzma-compressor.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/libostree/ostree-lzma-compressor.c') diff --git a/src/libostree/ostree-lzma-compressor.c b/src/libostree/ostree-lzma-compressor.c index ce429f99..1ec03c41 100644 --- a/src/libostree/ostree-lzma-compressor.c +++ b/src/libostree/ostree-lzma-compressor.c @@ -173,6 +173,13 @@ _ostree_lzma_compressor_convert (GConverter *converter, int res; lzma_action action; + if (inbuf_size != 0 && outbuf_size == 0) + { + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NO_SPACE, + "Output buffer too small"); + return G_CONVERTER_ERROR; + } + if (!self->initialized) { res = lzma_easy_encoder (&self->lstream, 8, LZMA_CHECK_CRC64); -- cgit v1.2.1