diff options
Diffstat (limited to 'print/xpdf/patches/patch-aq')
-rw-r--r-- | print/xpdf/patches/patch-aq | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/print/xpdf/patches/patch-aq b/print/xpdf/patches/patch-aq deleted file mode 100644 index a056d225e23..00000000000 --- a/print/xpdf/patches/patch-aq +++ /dev/null @@ -1,134 +0,0 @@ -$NetBSD: patch-aq,v 1.4 2011/10/27 02:35:41 tez Exp $ - -Fix arbitrary code execution with embedded fonts (CVE-2008-1693). - ---- xpdf/Object.h.orig 2011-08-15 16:08:53.000000000 -0500 -+++ xpdf/Object.h 2011-10-26 20:48:41.411023600 -0500 -@@ -68,17 +68,18 @@ - //------------------------------------------------------------------------ - - #ifdef DEBUG_MEM --#define initObj(t) ++numAlloc[type = t] -+#define initObj(t) zeroUnion(); ++numAlloc[type = t] - #else --#define initObj(t) type = t -+#define initObj(t) zeroUnion(); type = t - #endif - - class Object { - public: -- -+ // attempt to clear the anonymous union -+ void zeroUnion() { this->name = NULL; } - // Default constructor. - Object(): -- type(objNone) {} -+ type(objNone) { zeroUnion(); } - - // Initialize an object. - Object *initBool(GBool boolnA) -@@ -220,16 +221,16 @@ - #include "Array.h" - - inline int Object::arrayGetLength() -- { return array->getLength(); } -+ { if (type != objArray) return 0; return array->getLength(); } - - inline void Object::arrayAdd(Object *elem) -- { array->add(elem); } -+ { if (type == objArray) array->add(elem); } - - inline Object *Object::arrayGet(int i, Object *obj) -- { return array->get(i, obj); } -+ { if (type != objArray) return obj->initNull(); return array->get(i, obj); } - - inline Object *Object::arrayGetNF(int i, Object *obj) -- { return array->getNF(i, obj); } -+ { if (type != objArray) return obj->initNull(); return array->getNF(i, obj); } - - //------------------------------------------------------------------------ - // Dict accessors. -@@ -238,31 +239,31 @@ - #include "Dict.h" - - inline int Object::dictGetLength() -- { return dict->getLength(); } -+ { if (type != objDict) return 0; return dict->getLength(); } - - inline void Object::dictAdd(char *key, Object *val) -- { dict->add(key, val); } -+ { if (type == objDict) dict->add(key, val); } - - inline GBool Object::dictIs(const char *dictType) -- { return dict->is(dictType); } -+ { return (type == objDict) && dict->is(dictType); } - - inline GBool Object::isDict(const char *dictType) - { return type == objDict && dictIs(dictType); } - - inline Object *Object::dictLookup(const char *key, Object *obj, int recursion) -- { return dict->lookup(key, obj, recursion); } -+ { if (type != objDict) return obj->initNull(); return dict->lookup(key, obj, recursion); } - - inline Object *Object::dictLookupNF(const char *key, Object *obj) -- { return dict->lookupNF(key, obj); } -+ { if (type != objDict) return obj->initNull(); return dict->lookupNF(key, obj); } - - inline char *Object::dictGetKey(int i) -- { return dict->getKey(i); } -+ { if (type != objDict) return NULL; return dict->getKey(i); } - - inline Object *Object::dictGetVal(int i, Object *obj) -- { return dict->getVal(i, obj); } -+ { if (type != objDict) return obj->initNull(); return dict->getVal(i, obj); } - - inline Object *Object::dictGetValNF(int i, Object *obj) -- { return dict->getValNF(i, obj); } -+ { if (type != objDict) return obj->initNull(); return dict->getValNF(i, obj); } - - //------------------------------------------------------------------------ - // Stream accessors. -@@ -271,33 +272,33 @@ - #include "Stream.h" - - inline GBool Object::streamIs(char *dictType) -- { return stream->getDict()->is(dictType); } -+ { return (type == objStream) && stream->getDict()->is(dictType); } - - inline GBool Object::isStream(char *dictType) -- { return type == objStream && streamIs(dictType); } -+ { return (type == objStream) && streamIs(dictType); } - - inline void Object::streamReset() -- { stream->reset(); } -+ { if (type == objStream) stream->reset(); } - - inline void Object::streamClose() -- { stream->close(); } -+ { if (type == objStream) stream->close(); } - - inline int Object::streamGetChar() -- { return stream->getChar(); } -+ { if (type != objStream) return EOF; return stream->getChar(); } - - inline int Object::streamLookChar() -- { return stream->lookChar(); } -+ { if (type != objStream) return EOF; return stream->lookChar(); } - - inline char *Object::streamGetLine(char *buf, int size) -- { return stream->getLine(buf, size); } -+ { if (type != objStream) return NULL; return stream->getLine(buf, size); } - - inline Guint Object::streamGetPos() -- { return stream->getPos(); } -+ { if (type != objStream) return 0; return stream->getPos(); } - - inline void Object::streamSetPos(Guint pos, int dir) -- { stream->setPos(pos, dir); } -+ { if (type == objStream) stream->setPos(pos, dir); } - - inline Dict *Object::streamGetDict() -- { return stream->getDict(); } -+ { if (type != objStream) return NULL; return stream->getDict(); } - - #endif |