diff options
author | Don Anderson <dda@ddanderson.com> | 2015-05-13 14:16:46 -0400 |
---|---|---|
committer | Don Anderson <dda@ddanderson.com> | 2015-05-13 14:38:44 -0400 |
commit | c6b31832096f932858fe54b5d8b86c3784e156e3 (patch) | |
tree | 959ba6f1362ff33d281accad23d1f7fd78a49cdb | |
parent | 882f58147035fa27fc7c2c2c9030d219220c3ca3 (diff) | |
download | mongo-c6b31832096f932858fe54b5d8b86c3784e156e3.tar.gz |
Handle potential error condition from bzip.
-rw-r--r-- | ext/compressors/bzip2/bzip2_compress.c | 9 |
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( |