Commit 0e9b9dab33734f1598fc9617b94cf518ef9f1230

Authored by m-holger
Committed by GitHub
2 parents d1b8bd44 0663f1f8

Merge pull request #1263 from m-holger/fuzz

Guard against 0 byte writes in Pl_Buffer and Pl_String
libqpdf/Pl_Buffer.cc
@@ -19,6 +19,9 @@ Pl_Buffer::~Pl_Buffer() // NOLINT (modernize-use-equals-default) @@ -19,6 +19,9 @@ Pl_Buffer::~Pl_Buffer() // NOLINT (modernize-use-equals-default)
19 void 19 void
20 Pl_Buffer::write(unsigned char const* buf, size_t len) 20 Pl_Buffer::write(unsigned char const* buf, size_t len)
21 { 21 {
  22 + if (!len) {
  23 + return;
  24 + }
22 m->data.append(reinterpret_cast<char const*>(buf), len); 25 m->data.append(reinterpret_cast<char const*>(buf), len);
23 m->ready = false; 26 m->ready = false;
24 27
libqpdf/Pl_String.cc
@@ -21,6 +21,9 @@ Pl_String::~Pl_String() // NOLINT (modernize-use-equals-default) @@ -21,6 +21,9 @@ Pl_String::~Pl_String() // NOLINT (modernize-use-equals-default)
21 void 21 void
22 Pl_String::write(unsigned char const* buf, size_t len) 22 Pl_String::write(unsigned char const* buf, size_t len)
23 { 23 {
  24 + if (!len) {
  25 + return;
  26 + }
24 m->s.append(reinterpret_cast<char const*>(buf), len); 27 m->s.append(reinterpret_cast<char const*>(buf), len);
25 if (getNext(true)) { 28 if (getNext(true)) {
26 getNext()->write(buf, len); 29 getNext()->write(buf, len);