update to 0.14.4

changes:
-bugfixes (in particular for security issues which were patched in pkgsrc)
-fixed memory leaks
This commit is contained in:
drochner 2010-11-02 15:45:12 +00:00
parent 9e4a723829
commit e62d9250b0
14 changed files with 12 additions and 381 deletions

View file

@ -1,10 +1,9 @@
# $NetBSD: Makefile,v 1.32 2010/10/03 03:39:44 joerg Exp $ # $NetBSD: Makefile,v 1.33 2010/11/02 15:45:12 drochner Exp $
# #
.include "../../print/poppler/Makefile.common" .include "../../print/poppler/Makefile.common"
PKGNAME= poppler-glib-${POPPLER_VERS} PKGNAME= poppler-glib-${POPPLER_VERS}
PKGREVISION= 2
COMMENT= PDF rendering library (GLib wrapper) COMMENT= PDF rendering library (GLib wrapper)
MAINTAINER= reed@reedmedia.net MAINTAINER= reed@reedmedia.net

View file

@ -1,10 +1,9 @@
# $NetBSD: Makefile,v 1.7 2010/10/02 22:46:50 wiz Exp $ # $NetBSD: Makefile,v 1.8 2010/11/02 15:45:13 drochner Exp $
# #
.include "../../print/poppler/Makefile.common" .include "../../print/poppler/Makefile.common"
PKGNAME= poppler-includes-${POPPLER_VERS} PKGNAME= poppler-includes-${POPPLER_VERS}
PKGREVISION= 1
COMMENT= Poppler Xpdf includes (unsupported) COMMENT= Poppler Xpdf includes (unsupported)
MAINTAINER= dillo@NetBSD.org MAINTAINER= dillo@NetBSD.org

View file

@ -1,10 +1,9 @@
# $NetBSD: Makefile,v 1.27 2010/10/02 22:46:50 wiz Exp $ # $NetBSD: Makefile,v 1.28 2010/11/02 15:45:13 drochner Exp $
# #
.include "../../print/poppler/Makefile.common" .include "../../print/poppler/Makefile.common"
PKGNAME= poppler-qt-${POPPLER_VERS} PKGNAME= poppler-qt-${POPPLER_VERS}
PKGREVISION= 1
COMMENT= PDF rendering library (QT wrapper) COMMENT= PDF rendering library (QT wrapper)
MAINTAINER= reed@reedmedia.net MAINTAINER= reed@reedmedia.net

View file

@ -1,10 +1,9 @@
# $NetBSD: Makefile,v 1.15 2010/10/02 22:46:50 wiz Exp $ # $NetBSD: Makefile,v 1.16 2010/11/02 15:45:13 drochner Exp $
# #
.include "../../print/poppler/Makefile.common" .include "../../print/poppler/Makefile.common"
PKGNAME= poppler-qt4-${POPPLER_VERS} PKGNAME= poppler-qt4-${POPPLER_VERS}
PKGREVISION= 2
COMMENT= PDF rendering library (QT4 wrapper) COMMENT= PDF rendering library (QT4 wrapper)
MAINTAINER= reed@reedmedia.net MAINTAINER= reed@reedmedia.net

View file

@ -1,10 +1,9 @@
# $NetBSD: Makefile,v 1.16 2010/10/02 22:46:50 wiz Exp $ # $NetBSD: Makefile,v 1.17 2010/11/02 15:45:13 drochner Exp $
# #
.include "../../print/poppler/Makefile.common" .include "../../print/poppler/Makefile.common"
PKGNAME= poppler-utils-${POPPLER_VERS} PKGNAME= poppler-utils-${POPPLER_VERS}
PKGREVISION= 1
COMMENT= PDF utilities (from poppler) COMMENT= PDF utilities (from poppler)
MAINTAINER= reed@reedmedia.net MAINTAINER= reed@reedmedia.net

View file

@ -1,10 +1,9 @@
# $NetBSD: Makefile,v 1.50 2010/10/02 22:46:49 wiz Exp $ # $NetBSD: Makefile,v 1.51 2010/11/02 15:45:12 drochner Exp $
# #
.include "../../print/poppler/Makefile.common" .include "../../print/poppler/Makefile.common"
COMMENT= PDF rendering library COMMENT= PDF rendering library
PKGREVISION= 1
MAINTAINER= reed@reedmedia.net MAINTAINER= reed@reedmedia.net
USE_TOOLS+= gmake USE_TOOLS+= gmake

View file

@ -1,4 +1,4 @@
# $NetBSD: Makefile.common,v 1.40 2010/10/02 22:46:49 wiz Exp $ # $NetBSD: Makefile.common,v 1.41 2010/11/02 15:45:12 drochner Exp $
# #
# used by print/poppler/Makefile # used by print/poppler/Makefile
# used by print/poppler-glib/Makefile # used by print/poppler-glib/Makefile
@ -7,7 +7,7 @@
# used by print/poppler-qt4/Makefile # used by print/poppler-qt4/Makefile
# used by print/poppler-utils/Makefile # used by print/poppler-utils/Makefile
POPPLER_VERS= 0.14.2 POPPLER_VERS= 0.14.4
DISTNAME= poppler-${POPPLER_VERS} DISTNAME= poppler-${POPPLER_VERS}
CATEGORIES= print CATEGORIES= print
MASTER_SITES= http://poppler.freedesktop.org/ MASTER_SITES= http://poppler.freedesktop.org/

View file

@ -1,20 +1,14 @@
$NetBSD: distinfo,v 1.61 2010/10/01 21:32:34 spz Exp $ $NetBSD: distinfo,v 1.62 2010/11/02 15:45:12 drochner Exp $
SHA1 (poppler-0.14.2.tar.gz) = a93e85c322ce36da4e9b4e9e52c9fd12ea5f4d6f SHA1 (poppler-0.14.4.tar.gz) = c51931d7229126c16da54b72bfe63a190c2b5160
RMD160 (poppler-0.14.2.tar.gz) = bdbb901f85edd33ecd3ca1805a0f46c806bdb853 RMD160 (poppler-0.14.4.tar.gz) = 505ac4c3759a7d4b14c1d077f9249f317dc2d2af
Size (poppler-0.14.2.tar.gz) = 1791177 bytes Size (poppler-0.14.4.tar.gz) = 1794096 bytes
SHA1 (patch-aa) = b8c24eb7358410069f7ce6ad62576bc288cd55bb SHA1 (patch-aa) = b8c24eb7358410069f7ce6ad62576bc288cd55bb
SHA1 (patch-ab) = 441308aec73c66a34c00ee1fad30a38748c89a7d SHA1 (patch-ab) = 441308aec73c66a34c00ee1fad30a38748c89a7d
SHA1 (patch-ac) = c343775da48a1d86dea1451b74355d117e30f6c5 SHA1 (patch-ac) = c343775da48a1d86dea1451b74355d117e30f6c5
SHA1 (patch-ag) = 4b914e85bb08ce83305d20de9c0a3e74d3cabdd2 SHA1 (patch-ag) = 4b914e85bb08ce83305d20de9c0a3e74d3cabdd2
SHA1 (patch-ai) = a51dba3fb0e7131873ef82ae5e256fb1d17cee53 SHA1 (patch-ai) = a51dba3fb0e7131873ef82ae5e256fb1d17cee53
SHA1 (patch-ao) = cf7e0f086522147a91f59b1b26ca510d1971ac74 SHA1 (patch-ao) = cf7e0f086522147a91f59b1b26ca510d1971ac74
SHA1 (patch-ap) = db1c9765135865251a7958c3a4b86718b3313fae
SHA1 (patch-aq) = 01e115ca868e0bbd398bade92485d83edbe98d66 SHA1 (patch-aq) = 01e115ca868e0bbd398bade92485d83edbe98d66
SHA1 (patch-ba) = 3a6bf7bd31c7e0238edd4d6505943c71d75221e4
SHA1 (patch-bb) = c57c3b4bcf7a900e57bbf09d0fed28e2ef2dc737
SHA1 (patch-bc) = 456af841d297ce365878c9756d2c6327f9d7658e SHA1 (patch-bc) = 456af841d297ce365878c9756d2c6327f9d7658e
SHA1 (patch-bd) = 8fd34a0f8c916a2ddd28654a6a6e0fedc35d5359
SHA1 (patch-be) = e4e9b351c902255f2437c37e1925def750401aa9
SHA1 (patch-bf) = aedde989871fe452c5538dade6bfa9b4e343da6c
SHA1 (patch-bg) = b0353bf4bbee7a85f2a81e346119747897c7289f SHA1 (patch-bg) = b0353bf4bbee7a85f2a81e346119747897c7289f

View file

@ -1,152 +0,0 @@
$NetBSD: patch-ap,v 1.3 2010/10/01 21:32:34 spz Exp $
https://bugs.freedesktop.org/show_bug.cgi?id=25189
plus security fixes for http://secunia.com/advisories/41596/
taken from http://cgit.freedesktop.org/poppler/
- Make sure obj1 is a num before reading it
- Fix crash in broken pdf (parser->getStream() is 0)
- Properly initialize parser
- Give a value to color.c[i]
--- poppler/Gfx.cc.orig 2010-08-11 19:20:32.000000000 +0000
+++ poppler/Gfx.cc
@@ -536,6 +536,7 @@ Gfx::Gfx(XRef *xrefA, OutputDev *outA, i
drawText = gFalse;
maskHaveCSPattern = gFalse;
mcStack = NULL;
+ parser = NULL;
// start the resource stack
res = new GfxResources(xref, resDict, NULL);
@@ -590,6 +591,7 @@ Gfx::Gfx(XRef *xrefA, OutputDev *outA, D
drawText = gFalse;
maskHaveCSPattern = gFalse;
mcStack = NULL;
+ parser = NULL;
// start the resource stack
res = new GfxResources(xref, resDict, NULL);
@@ -1531,6 +1533,8 @@ void Gfx::opSetFillColorN(Object args[],
for (i = 0; i < numArgs - 1 && i < gfxColorMaxComps; ++i) {
if (args[i].isNum()) {
color.c[i] = dblToCol(args[i].getNum());
+ } else {
+ color.c[i] = 0; // TODO Investigate if this is what Adobe does
}
}
state->setFillColor(&color);
@@ -1550,6 +1554,8 @@ void Gfx::opSetFillColorN(Object args[],
for (i = 0; i < numArgs && i < gfxColorMaxComps; ++i) {
if (args[i].isNum()) {
color.c[i] = dblToCol(args[i].getNum());
+ } else {
+ color.c[i] = 0; // TODO Investigate if this is what Adobe does
}
}
state->setFillColor(&color);
@@ -1574,6 +1580,8 @@ void Gfx::opSetStrokeColorN(Object args[
for (i = 0; i < numArgs - 1 && i < gfxColorMaxComps; ++i) {
if (args[i].isNum()) {
color.c[i] = dblToCol(args[i].getNum());
+ } else {
+ color.c[i] = 0; // TODO Investigate if this is what Adobe does
}
}
state->setStrokeColor(&color);
@@ -1593,6 +1601,8 @@ void Gfx::opSetStrokeColorN(Object args[
for (i = 0; i < numArgs && i < gfxColorMaxComps; ++i) {
if (args[i].isNum()) {
color.c[i] = dblToCol(args[i].getNum());
+ } else {
+ color.c[i] = 0; // TODO Investigate if this is what Adobe does
}
}
state->setStrokeColor(&color);
@@ -2421,7 +2431,7 @@ static void bubbleSort(double array[])
void Gfx::doAxialShFill(GfxAxialShading *shading) {
double xMin, yMin, xMax, yMax;
double x0, y0, x1, y1;
- double dx, dy, mul;
+ double dx, dy, len2;
GBool dxZero, dyZero;
double bboxIntersections[4];
double tMin, tMax, tx, ty;
@@ -2443,16 +2453,18 @@ void Gfx::doAxialShFill(GfxAxialShading
shading->getCoords(&x0, &y0, &x1, &y1);
dx = x1 - x0;
dy = y1 - y0;
- dxZero = fabs(dx) < 0.01;
- dyZero = fabs(dy) < 0.01;
- if (dxZero && dyZero) {
- tMin = tMax = 0;
+ dxZero = (dx == 0.0);
+ dyZero = (dy == 0.0);
+ len2 = dx * dx + dy * dy;
+ if (len2 == 0.0) {
+ /* invalid? */
+ tMin = 0;
+ tMax = 1;
} else {
- mul = 1 / (dx * dx + dy * dy);
- bboxIntersections[0] = ((xMin - x0) * dx + (yMin - y0) * dy) * mul;
- bboxIntersections[1] = ((xMin - x0) * dx + (yMax - y0) * dy) * mul;
- bboxIntersections[2] = ((xMax - x0) * dx + (yMin - y0) * dy) * mul;
- bboxIntersections[3] = ((xMax - x0) * dx + (yMax - y0) * dy) * mul;
+ bboxIntersections[0] = ((xMin - x0) * dx + (yMin - y0) * dy) / len2;
+ bboxIntersections[1] = ((xMin - x0) * dx + (yMax - y0) * dy) / len2;
+ bboxIntersections[2] = ((xMax - x0) * dx + (yMin - y0) * dy) / len2;
+ bboxIntersections[3] = ((xMax - x0) * dx + (yMax - y0) * dy) / len2;
bubbleSort(bboxIntersections);
tMin = bboxIntersections[0];
tMax = bboxIntersections[3];
@@ -4225,8 +4237,14 @@ void Gfx::doForm(Object *str) {
}
for (i = 0; i < 4; ++i) {
bboxObj.arrayGet(i, &obj1);
- bbox[i] = obj1.getNum();
- obj1.free();
+ if (likely(obj1.isNum())) {
+ bbox[i] = obj1.getNum();
+ obj1.free();
+ } else {
+ obj1.free();
+ error(getPos(), "Bad form bounding box value");
+ return;
+ }
}
bboxObj.free();
@@ -4449,8 +4467,13 @@ Stream *Gfx::buildImageStream() {
obj.free();
// make stream
- str = new EmbedStream(parser->getStream(), &dict, gFalse, 0);
- str = str->addFilters(&dict);
+ if (parser->getStream()) {
+ str = new EmbedStream(parser->getStream(), &dict, gFalse, 0);
+ str = str->addFilters(&dict);
+ } else {
+ str = NULL;
+ dict.free();
+ }
return str;
}
@@ -4651,8 +4674,14 @@ void Gfx::drawAnnot(Object *str, AnnotBo
}
for (i = 0; i < 4; ++i) {
bboxObj.arrayGet(i, &obj1);
- bbox[i] = obj1.getNum();
- obj1.free();
+ if (likely(obj1.isNum())) {
+ bbox[i] = obj1.getNum();
+ obj1.free();
+ } else {
+ obj1.free();
+ error(getPos(), "Bad form bounding box value");
+ return;
+ }
}
bboxObj.free();

View file

@ -1,82 +0,0 @@
$NetBSD: patch-ba,v 1.5 2010/10/01 21:32:34 spz Exp $
security fixes for http://secunia.com/advisories/41596/
taken from http://cgit.freedesktop.org/poppler
- Fix memory leak if obj2 is not a dict
- Avoid loops in Form::fieldLookup
--- poppler/Form.cc.orig 2010-06-08 20:06:31.000000000 +0000
+++ poppler/Form.cc
@@ -22,6 +22,7 @@
#pragma implementation
#endif
+#include <set>
#include <stddef.h>
#include <string.h>
#include "goo/gmem.h"
@@ -715,13 +716,14 @@ FormField::FormField(XRef* xrefA, Object
// Load children
for(int i=0; i<length; i++) {
Object obj2,obj3;
- Object childRef;
array->get(i, &obj2);
- array->getNF(i, &childRef);
if (!obj2.isDict ()) {
error (-1, "Reference to an invalid or non existant object");
+ obj2.free();
continue;
}
+ Object childRef;
+ array->getNF(i, &childRef);
//field child
if (dict->lookup ("FT", &obj3)->isName()) {
// If I'm not a generic container field and my children
@@ -1180,7 +1182,7 @@ Form::~Form() {
}
// Look up an inheritable field dictionary entry.
-Object *Form::fieldLookup(Dict *field, char *key, Object *obj) {
+static Object *fieldLookup(Dict *field, char *key, Object *obj, std::set<int> *usedParents) {
Dict *dict;
Object parent;
@@ -1189,8 +1191,23 @@ Object *Form::fieldLookup(Dict *field, c
return obj;
}
obj->free();
- if (dict->lookup("Parent", &parent)->isDict()) {
- fieldLookup(parent.getDict(), key, obj);
+ dict->lookupNF("Parent", &parent);
+ if (parent.isRef()) {
+ const Ref ref = parent.getRef();
+ if (usedParents->find(ref.num) == usedParents->end()) {
+ usedParents->insert(ref.num);
+
+ Object obj2;
+ parent.fetch(dict->getXRef(), &obj2);
+ if (obj2.isDict()) {
+ fieldLookup(obj2.getDict(), key, obj, usedParents);
+ } else {
+ obj->initNull();
+ }
+ obj2.free();
+ }
+ } else if (parent.isDict()) {
+ fieldLookup(parent.getDict(), key, obj, usedParents);
} else {
obj->initNull();
}
@@ -1198,6 +1215,11 @@ Object *Form::fieldLookup(Dict *field, c
return obj;
}
+Object *Form::fieldLookup(Dict *field, char *key, Object *obj) {
+ std::set<int> usedParents;
+ return ::fieldLookup(field, key, obj, &usedParents);
+}
+
FormField *Form::createFieldFromDict (Object* obj, XRef *xrefA, const Ref& pref)
{
Object obj2;

View file

@ -1,26 +0,0 @@
$NetBSD: patch-bb,v 1.5 2010/10/01 21:32:34 spz Exp $
security fixes for http://secunia.com/advisories/41596/
taken from http://cgit.freedesktop.org/poppler
- Avoid loops in Form::fieldLookup
--- poppler/Dict.h.orig 2010-10-01 05:53:53.000000000 +0000
+++ poppler/Dict.h
@@ -16,6 +16,7 @@
// Copyright (C) 2005 Kristian Høgsberg <krh@redhat.com>
// Copyright (C) 2006 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
// Copyright (C) 2007-2008 Julien Rebetez <julienr@svn.gnome.org>
+// Copyright (C) 2010 Albert Astals Cid <aacid@kde.org>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -84,6 +85,8 @@ public:
// parsed.
void setXRef(XRef *xrefA) { xref = xrefA; }
+ XRef *getXRef() { return xref; }
+
private:
XRef *xref; // the xref table for this PDF file

View file

@ -1,48 +0,0 @@
$NetBSD: patch-bd,v 1.1 2010/10/01 21:32:34 spz Exp $
security fixes for http://secunia.com/advisories/41596/
taken from http://cgit.freedesktop.org/poppler
- Fix crash in broken pdf (code < 0)
--- fofi/FoFiType1.cc.orig 2010-06-08 20:06:31.000000000 +0000
+++ fofi/FoFiType1.cc
@@ -13,7 +13,7 @@
// All changes made under the Poppler project to this file are licensed
// under GPL version 2 or later
//
-// Copyright (C) 2005, 2008 Albert Astals Cid <aacid@kde.org>
+// Copyright (C) 2005, 2008, 2010 Albert Astals Cid <aacid@kde.org>
// Copyright (C) 2005 Kristian Høgsberg <krh@redhat.com>
// Copyright (C) 2010 Jakub Wilk <ubanus@users.sf.net>
//
@@ -30,11 +30,20 @@
#include <stdlib.h>
#include <string.h>
+
#include "goo/gmem.h"
#include "FoFiEncodings.h"
#include "FoFiType1.h"
#include "poppler/Error.h"
+#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
+# define likely(x) __builtin_expect((x), 1)
+# define unlikely(x) __builtin_expect((x), 0)
+#else
+# define likely(x) (x)
+# define unlikely(x) (x)
+#endif
+
//------------------------------------------------------------------------
// FoFiType1
//------------------------------------------------------------------------
@@ -243,7 +252,7 @@ void FoFiType1::parse() {
code = code * 8 + (*p2 - '0');
}
}
- if (code < 256) {
+ if (likely(code < 256 && code >= 0)) {
for (p = p2; *p == ' ' || *p == '\t'; ++p) ;
if (*p == '/') {
++p;

View file

@ -1,18 +0,0 @@
$NetBSD: patch-be,v 1.1 2010/10/01 21:32:34 spz Exp $
security fixes for http://secunia.com/advisories/41596/
taken from http://cgit.freedesktop.org/poppler
- Initialize properly charactersRead
--- poppler/Decrypt.cc.orig 2010-06-08 20:06:31.000000000 +0000
+++ poppler/Decrypt.cc
@@ -229,6 +229,8 @@ DecryptStream::DecryptStream(Stream *str
if ((objKeyLength = keyLength + 5) > 16) {
objKeyLength = 16;
}
+
+ charactersRead = 0;
}
DecryptStream::~DecryptStream() {

View file

@ -1,31 +0,0 @@
$NetBSD: patch-bf,v 1.1 2010/10/01 21:32:34 spz Exp $
security fixes for http://secunia.com/advisories/41596/
taken from http://cgit.freedesktop.org/poppler
- Properly initialize stack
- Fix crash when idx is out of range
--- poppler/Function.cc.orig 2010-07-24 12:01:53.000000000 +0000
+++ poppler/Function.cc
@@ -422,7 +422,11 @@ void SampledFunction::transform(double *
for (k = 0, t = j; k < m; ++k, t >>= 1) {
idx += idxMul[k] * (e[k][t & 1]);
}
- sBuf[j] = samples[idx];
+ if (likely(idx >= 0 && idx < nSamples)) {
+ sBuf[j] = samples[idx];
+ } else {
+ sBuf[j] = 0;
+ }
}
// do m sets of interpolations
@@ -1108,6 +1112,7 @@ PostScriptFunction::PostScriptFunction(O
code = NULL;
codeString = NULL;
codeSize = 0;
+ stack = NULL;
ok = gFalse;
cache = new PopplerCache(5);