]> source.dussan.org Git - tigervnc.git/commitdiff
Fix error check for zlib calls
authorPierre Ossman <ossman@cendio.se>
Thu, 27 Feb 2020 12:35:41 +0000 (13:35 +0100)
committerPierre Ossman <ossman@cendio.se>
Thu, 27 Feb 2020 12:35:41 +0000 (13:35 +0100)
There are multiple "okay" return values, not just Z_OK. Make sure we
don't bail out needlessly.

common/rdr/ZlibInStream.cxx
common/rdr/ZlibOutStream.cxx

index 9fcfaf6b7bf6128180a129ad6726c5ee617bad66..0fb3ad1e9d610d11a901c83eb6cec43e7a871769 100644 (file)
@@ -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");
   }
 
index 7a0d692c02f00868b01b3b766adb96bbf80f9c14..99d0617a1bb798fd47af477a1da67df6d19d8ac5 100644 (file)
@@ -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...