summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDon Anderson <dda@ddanderson.com>2015-05-13 14:16:46 -0400
committerDon Anderson <dda@ddanderson.com>2015-05-13 14:38:44 -0400
commitc6b31832096f932858fe54b5d8b86c3784e156e3 (patch)
tree959ba6f1362ff33d281accad23d1f7fd78a49cdb
parent882f58147035fa27fc7c2c2c9030d219220c3ca3 (diff)
downloadmongo-c6b31832096f932858fe54b5d8b86c3784e156e3.tar.gz
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(