File qpdf-CVE-2021-36978.patch of Package qpdf.25219

Index: qpdf-8.0.2/libqpdf/Pl_AES_PDF.cc
===================================================================
--- qpdf-8.0.2.orig/libqpdf/Pl_AES_PDF.cc
+++ qpdf-8.0.2/libqpdf/Pl_AES_PDF.cc
@@ -260,6 +260,6 @@ Pl_AES_PDF::flush(bool strip_padding)
 	    }
 	}
     }
-    getNext()->write(this->outbuf, bytes);
     this->offset = 0;
+    getNext()->write(this->outbuf, bytes);
 }
Index: qpdf-8.0.2/libqpdf/Pl_ASCII85Decoder.cc
===================================================================
--- qpdf-8.0.2.orig/libqpdf/Pl_ASCII85Decoder.cc
+++ qpdf-8.0.2/libqpdf/Pl_ASCII85Decoder.cc
@@ -119,10 +119,13 @@ Pl_ASCII85Decoder::flush()
 
     QTC::TC("libtests", "Pl_ASCII85Decoder partial flush",
 	    (this->pos == 5) ? 0 : 1);
-    getNext()->write(outbuf, this->pos - 1);
-
+    // Reset before calling getNext()->write in case that throws an
+    // exception.
+    int t = this->pos - 1;
     this->pos = 0;
     memset(this->inbuf, 117, 5);
+
+    getNext()->write(outbuf, t);
 }
 
 void
Index: qpdf-8.0.2/libqpdf/Pl_ASCIIHexDecoder.cc
===================================================================
--- qpdf-8.0.2.orig/libqpdf/Pl_ASCIIHexDecoder.cc
+++ qpdf-8.0.2/libqpdf/Pl_ASCIIHexDecoder.cc
@@ -97,12 +97,14 @@ Pl_ASCIIHexDecoder::flush()
 
     QTC::TC("libtests", "Pl_ASCIIHexDecoder partial flush",
 	    (this->pos == 2) ? 0 : 1);
-    getNext()->write(&ch, 1);
-
+    // Reset before calling getNext()->write in case that throws an
+    // exception.
     this->pos = 0;
     this->inbuf[0] = '0';
     this->inbuf[1] = '0';
     this->inbuf[2] = '\0';
+
+    getNext()->write(&ch, 1);
 }
 
 void
Index: qpdf-8.0.2/libqpdf/Pl_Count.cc
===================================================================
--- qpdf-8.0.2.orig/libqpdf/Pl_Count.cc
+++ qpdf-8.0.2/libqpdf/Pl_Count.cc
@@ -17,8 +17,8 @@ Pl_Count::write(unsigned char* buf, size
     if (len)
     {
 	this->count += len;
-	getNext()->write(buf, len);
 	this->last_char = buf[len - 1];
+	getNext()->write(buf, len);
     }
 }
 
openSUSE Build Service is sponsored by