Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > core-updates-src > by-pkgid > 1a57862dfc9f303438c50d4315478f30 > files > 3

poppler-0.26.5-2.9.mga5.src.rpm

From b21b041f7948680c03109f0c404400a9dbc4544c Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
Date: Tue, 25 Apr 2017 19:48:24 +0200
Subject: Fix memory leak when reconstructing broken files

Need to free the catalog variable if we're going to fetch over it again

Bug #100776

Index: poppler-0.24.5/poppler/XRef.cc
===================================================================
--- poppler-0.24.5.orig/poppler/XRef.cc	2017-07-06 11:40:04.712727328 -0400
+++ poppler-0.24.5/poppler/XRef.cc	2017-07-06 11:40:04.708727263 -0400
@@ -1121,13 +1121,16 @@ GBool XRef::okToAssemble(GBool ignoreOwn
 }
 
 Object *XRef::getCatalog(Object *catalog) {
-  Object *obj = fetch(rootNum, rootGen, catalog);
-  if (obj->isDict()) {
-    return obj;
+  fetch(rootNum, rootGen, catalog);
+  if (catalog->isDict()) {
+    return catalog;
   }
   GBool wasReconstructed = false;
-  GBool ok = constructXRef(&wasReconstructed, gTrue);
-  return (ok) ? fetch(rootNum, rootGen, catalog) : obj;
+  if (constructXRef(&wasReconstructed, gTrue)) {
+    catalog->free();
+    fetch(rootNum, rootGen, catalog);
+  }
+  return catalog;
 }
 
 Object *XRef::fetch(int num, int gen, Object *obj, int recursion) {