[poppler] poppler/OptionalContent.cc

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Sep 18 17:34:18 UTC 2018


 poppler/OptionalContent.cc |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

New commits:
commit 560b34a6e2d3fd58edfb5f0af751f1aa7d3dc3d8
Author: Adam Reichold <adam.reichold at t-online.de>
Date:   Tue Sep 18 11:35:55 2018 +0200

    Prevent leaking OptionalContentGroup by using unique_ptr as early as possible. oss-fuzz/10418

diff --git a/poppler/OptionalContent.cc b/poppler/OptionalContent.cc
index 116b6ba9..717dc33d 100644
--- a/poppler/OptionalContent.cc
+++ b/poppler/OptionalContent.cc
@@ -54,16 +54,15 @@ OCGs::OCGs(Object *ocgObject, XRef *xref) :
     if (!ocg.isDict()) {
       break;
     }
-    OptionalContentGroup *thisOptionalContentGroup = new OptionalContentGroup(ocg.getDict());
+    auto thisOptionalContentGroup = std::make_unique<OptionalContentGroup>(ocg.getDict());
     ocg = ocgList.arrayGetNF(i);
     if (!ocg.isRef()) {
-      delete thisOptionalContentGroup;
       break;
     }
     thisOptionalContentGroup->setRef( ocg.getRef() );
     // the default is ON - we change state later, depending on BaseState, ON and OFF
     thisOptionalContentGroup->setState(OptionalContentGroup::On);
-    optionalContentGroups.emplace(ocg.getRef(), thisOptionalContentGroup);
+    optionalContentGroups.emplace(ocg.getRef(), std::move(thisOptionalContentGroup));
   }
 
   Object defaultOcgConfig = ocgObject->dictLookup("D");


More information about the poppler mailing list