diff options
author | Jay Berkenbilt <ejb@ql.org> | 2021-01-04 17:55:28 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-01-04 21:17:35 +0100 |
commit | dc92574c10f3e2516ec6445b88c5d584f40df4e5 (patch) | |
tree | 221eca0c948b2a19d7735027e514459694fca7dd /libqpdf/Pl_ASCIIHexDecoder.cc | |
parent | a9bdeeb0e0059cf702f63c04affbcb56ecc8a29e (diff) | |
download | qpdf-dc92574c10f3e2516ec6445b88c5d584f40df4e5.tar.zst |
Fix some pipelines to be safe if downstream write fails (fuzz issue 28262)
Diffstat (limited to 'libqpdf/Pl_ASCIIHexDecoder.cc')
-rw-r--r-- | libqpdf/Pl_ASCIIHexDecoder.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libqpdf/Pl_ASCIIHexDecoder.cc b/libqpdf/Pl_ASCIIHexDecoder.cc index f20a9769..7845268e 100644 --- a/libqpdf/Pl_ASCIIHexDecoder.cc +++ b/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 |