From: Pierre Ossman Date: Thu, 27 Feb 2020 12:35:41 +0000 (+0100) Subject: Fix error check for zlib calls X-Git-Tag: v1.10.90~47 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1688e8cd57606f7aaeb0abddc8e9ce3827d253cc;p=tigervnc.git Fix error check for zlib calls There are multiple "okay" return values, not just Z_OK. Make sure we don't bail out needlessly. --- diff --git a/common/rdr/ZlibInStream.cxx b/common/rdr/ZlibInStream.cxx index 9fcfaf6b..0fb3ad1e 100644 --- a/common/rdr/ZlibInStream.cxx +++ b/common/rdr/ZlibInStream.cxx @@ -141,7 +141,7 @@ bool ZlibInStream::decompress(bool wait) zs->avail_in = bytesIn; int rc = inflate(zs, Z_SYNC_FLUSH); - if (rc != Z_OK) { + if (rc < 0) { throw Exception("ZlibInStream: inflate failed"); } diff --git a/common/rdr/ZlibOutStream.cxx b/common/rdr/ZlibOutStream.cxx index 7a0d692c..99d0617a 100644 --- a/common/rdr/ZlibOutStream.cxx +++ b/common/rdr/ZlibOutStream.cxx @@ -159,7 +159,7 @@ void ZlibOutStream::deflate(int flush) #endif rc = ::deflate(zs, flush); - if (rc != Z_OK) { + if (rc < 0) { // Silly zlib returns an error if you try to flush something twice if ((rc == Z_BUF_ERROR) && (flush != Z_NO_FLUSH)) break; @@ -193,7 +193,7 @@ void ZlibOutStream::checkCompressionLevel() deflate(Z_SYNC_FLUSH); rc = deflateParams (zs, newLevel, Z_DEFAULT_STRATEGY); - if (rc != Z_OK) { + if (rc < 0) { // The implicit flush can result in this error, caused by the // explicit flush we did above. It should be safe to ignore though // as the first flush should have left things in a stable state...