summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gorrod <alexander.gorrod@mongodb.com>2015-05-14 11:51:53 +1000
committerAlex Gorrod <alexander.gorrod@mongodb.com>2015-05-14 11:51:53 +1000
commit9d2d5cfebc81a82ed5900fb8cd353c810592f28c (patch)
tree95162675f6137c93a3f990e6d57d8cd57983875a
parentd3a4e1b24f610c37b99a6385e4dd6fefd040ce7c (diff)
parentc6b31832096f932858fe54b5d8b86c3784e156e3 (diff)
downloadmongo-9d2d5cfebc81a82ed5900fb8cd353c810592f28c.tar.gz
Merge pull request #1968 from wiredtiger/bzip-error
Handle potential error condition from bzip.
-rw-r--r--ext/compressors/bzip2/bzip2_compress.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/compressors/bzip2/bzip2_compress.c b/ext/compressors/bzip2/bzip2_compress.c
index 3f2e09de2f6..6cd53aba5d2 100644
--- a/ext/compressors/bzip2/bzip2_compress.c
+++ b/ext/compressors/bzip2/bzip2_compress.c
@@ -314,8 +314,15 @@ bzip2_decompress(WT_COMPRESSOR *compressor, WT_SESSION *session,
if ((ret = BZ2_bzDecompress(&bz)) == BZ_STREAM_END) {
*result_lenp = dst_len - bz.avail_out;
ret = 0;
- } else
+ } else {
+ /*
+ * If BZ2_bzDecompress returns 0, it expects there to be more
+ * data available. There isn't, so treat this as an error.
+ */
+ if (ret == 0)
+ ret = BZ_DATA_ERROR;
(void)bzip2_error(compressor, session, "BZ2_bzDecompress", ret);
+ }
if ((tret = BZ2_bzDecompressEnd(&bz)) != BZ_OK)
return (bzip2_error(