poppler/Catalog.cc |   34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

New commits:
commit 0ce4da8ab16b4a5497688a6cf86175aaec0f585f
Author: Albert Astals Cid <[email protected]>
Date:   Wed Jul 15 23:59:11 2015 +0200

    Make sure pageRootRef is a ref before using it
    
    Bug #91344

diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc
index 9603024..44a972e 100644
--- a/poppler/Catalog.cc
+++ b/poppler/Catalog.cc
@@ -828,21 +828,25 @@ int Catalog::getNumPages()
        error(errSyntaxError, -1, "Pages top-level is a single Page. The 
document is mal-formed, trying to recover...");
 
        Dict *pageDict = pagesDict.getDict();
-       const Ref pageRef = pageRootRef.getRef();
-       Page *p = new Page(doc, 1, pageDict, pageRef, new PageAttrs(NULL, 
pageDict), form);
-       if (p->isOk()) {
-         pages = (Page **)gmallocn(1, sizeof(Page *));
-         pageRefs = (Ref *)gmallocn(1, sizeof(Ref));
-
-         pages[0] = p;
-         pageRefs[0].num = pageRef.num;
-         pageRefs[0].gen = pageRef.gen;
-
-         numPages = 1;
-         lastCachedPage = 1;
-         pagesSize = 1;
+       if (pageRootRef.isRef()) {
+         const Ref pageRef = pageRootRef.getRef();
+         Page *p = new Page(doc, 1, pageDict, pageRef, new PageAttrs(NULL, 
pageDict), form);
+         if (p->isOk()) {
+           pages = (Page **)gmallocn(1, sizeof(Page *));
+           pageRefs = (Ref *)gmallocn(1, sizeof(Ref));
+
+           pages[0] = p;
+           pageRefs[0].num = pageRef.num;
+           pageRefs[0].gen = pageRef.gen;
+
+           numPages = 1;
+           lastCachedPage = 1;
+           pagesSize = 1;
+         } else {
+           delete p;
+           numPages = 0;
+         }
        } else {
-         delete p;
          numPages = 0;
        }
       } else {
commit b71431513b45f8a1aa4154332dae56af241258f8
Author: Albert Astals Cid <[email protected]>
Date:   Wed Jul 15 13:10:27 2015 +0200

    Typo fix in warning

diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc
index f75f4e1..9603024 100644
--- a/poppler/Catalog.cc
+++ b/poppler/Catalog.cc
@@ -825,7 +825,7 @@ int Catalog::getNumPages()
        Object pageRootRef;
        catDict.dictLookupNF("Pages", &pageRootRef);
 
-       error(errSyntaxError, -1, "Pages top-level is a single Page. The 
document is mal-formet, trying to recover...");
+       error(errSyntaxError, -1, "Pages top-level is a single Page. The 
document is mal-formed, trying to recover...");
 
        Dict *pageDict = pagesDict.getDict();
        const Ref pageRef = pageRootRef.getRef();
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to