Update to 0.73.0
This commit is contained in:
parent
f513561f6c
commit
568ecdfabe
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,3 +3,5 @@
|
|||||||
/poppler-0.62.0.tar.xz
|
/poppler-0.62.0.tar.xz
|
||||||
/poppler-0.63.0.tar.xz
|
/poppler-0.63.0.tar.xz
|
||||||
/poppler-0.67.0.tar.xz
|
/poppler-0.67.0.tar.xz
|
||||||
|
/poppler-0.73.0.tar.xz
|
||||||
|
/poppler-test-2018-12-18-45f55f1e03b9bf3fbd334c31776b6f5e472889ec.tar.xz
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -24,11 +24,11 @@ index 7c2ca78..e93908c 100644
|
|||||||
+// a and b don't need to be sorted.
|
+// a and b don't need to be sorted.
|
||||||
+#define XBetweenAB(x,a,b) (!(((x) > (a) && (x) > (b)) || \
|
+#define XBetweenAB(x,a,b) (!(((x) > (a) && (x) > (b)) || \
|
||||||
+ ((x) < (a) && (x) < (b))) ? \
|
+ ((x) < (a) && (x) < (b))) ? \
|
||||||
+ gTrue : gFalse)
|
+ true : false)
|
||||||
+
|
+
|
||||||
static int reorderText(Unicode *text, int len, UnicodeMap *uMap, GBool primaryLR, GooString *s, Unicode* u) {
|
namespace {
|
||||||
char lre[8], rle[8], popdf[8], buf[8];
|
|
||||||
int lreLen = 0, rleLen = 0, popdfLen = 0, n;
|
inline bool isAscii7 (Unicode uchar) {
|
||||||
@@ -4411,11 +4417,37 @@ void TextSelectionSizer::visitLine (TextLine *line,
|
@@ -4411,11 +4417,37 @@ void TextSelectionSizer::visitLine (TextLine *line,
|
||||||
PDFRectangle *rect;
|
PDFRectangle *rect;
|
||||||
double x1, y1, x2, y2, margin;
|
double x1, y1, x2, y2, margin;
|
||||||
|
@ -19,7 +19,7 @@ index 631ab27b..b2e730bf 100644
|
|||||||
+++ b/poppler/CairoOutputDev.cc
|
+++ b/poppler/CairoOutputDev.cc
|
||||||
@@ -915,6 +915,8 @@ GBool CairoOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *cat
|
@@ -915,6 +915,8 @@ GBool CairoOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *cat
|
||||||
StrokePathClip *strokePathTmp;
|
StrokePathClip *strokePathTmp;
|
||||||
GBool adjusted_stroke_width_tmp;
|
bool adjusted_stroke_width_tmp;
|
||||||
cairo_pattern_t *maskTmp;
|
cairo_pattern_t *maskTmp;
|
||||||
+ double xoffset, yoffset;
|
+ double xoffset, yoffset;
|
||||||
+ double det;
|
+ double det;
|
||||||
@ -28,11 +28,11 @@ index 631ab27b..b2e730bf 100644
|
|||||||
height = bbox[3] - bbox[1];
|
height = bbox[3] - bbox[1];
|
||||||
@@ -976,6 +978,15 @@ GBool CairoOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *cat
|
@@ -976,6 +978,15 @@ GBool CairoOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *cat
|
||||||
if (cairo_pattern_status (pattern))
|
if (cairo_pattern_status (pattern))
|
||||||
return gFalse;
|
return false;
|
||||||
|
|
||||||
+ det = pmat[0] * pmat[3] - pmat[1] * pmat[2];
|
+ det = pmat[0] * pmat[3] - pmat[1] * pmat[2];
|
||||||
+ if (fabs(det) < 0.000001)
|
+ if (fabs(det) < 0.000001)
|
||||||
+ return gFalse;
|
+ return false;
|
||||||
+
|
+
|
||||||
+ xoffset = round ((pmat[3] * pmat[4] - pmat[2] * pmat[5]) / (xStep * det));
|
+ xoffset = round ((pmat[3] * pmat[4] - pmat[2] * pmat[5]) / (xStep * det));
|
||||||
+ yoffset = - round ((pmat[1] * pmat[4] - pmat[0] * pmat[5]) / (yStep * det));
|
+ yoffset = - round ((pmat[1] * pmat[4] - pmat[0] * pmat[5]) / (yStep * det));
|
||||||
|
@ -1,65 +0,0 @@
|
|||||||
From 3d35d209c19c1d3b09b794a0c863ba5de44a9c0a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Marek Kasik <mkasik@redhat.com>
|
|
||||||
Date: Mon, 29 Oct 2018 17:44:47 +0100
|
|
||||||
Subject: [PATCH] Avoid cycles in PDF parsing
|
|
||||||
|
|
||||||
Mark objects being processed in Parser::makeStream() as being processed
|
|
||||||
and check the mark when entering this method to avoid processing
|
|
||||||
of the same object recursively.
|
|
||||||
---
|
|
||||||
poppler/Parser.cc | 15 +++++++++++++++
|
|
||||||
poppler/XRef.h | 1 +
|
|
||||||
2 files changed, 16 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/poppler/Parser.cc b/poppler/Parser.cc
|
|
||||||
index bd4845ab..8f48efbe 100644
|
|
||||||
--- a/poppler/Parser.cc
|
|
||||||
+++ b/poppler/Parser.cc
|
|
||||||
@@ -197,6 +197,18 @@ Stream *Parser::makeStream(Object &&dict, Guchar *fileKey,
|
|
||||||
Stream *str;
|
|
||||||
Goffset length;
|
|
||||||
Goffset pos, endPos;
|
|
||||||
+ XRefEntry *entry = nullptr;
|
|
||||||
+
|
|
||||||
+ if (xref && (entry = xref->getEntry(objNum, false))) {
|
|
||||||
+ if (!entry->getFlag(XRefEntry::Parsing) ||
|
|
||||||
+ (objNum == 0 && objGen == 0)) {
|
|
||||||
+ entry->setFlag(XRefEntry::Parsing, true);
|
|
||||||
+ } else {
|
|
||||||
+ error(errSyntaxError, getPos(),
|
|
||||||
+ "Object '{0:d} {1:d} obj' is being already parsed", objNum, objGen);
|
|
||||||
+ return nullptr;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
// get stream start position
|
|
||||||
lexer->skipToNextLine();
|
|
||||||
@@ -278,6 +290,9 @@ Stream *Parser::makeStream(Object &&dict, Guchar *fileKey,
|
|
||||||
// get filters
|
|
||||||
str = str->addFilters(str->getDict(), recursion);
|
|
||||||
|
|
||||||
+ if (entry)
|
|
||||||
+ entry->setFlag(XRefEntry::Parsing, false);
|
|
||||||
+
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/poppler/XRef.h b/poppler/XRef.h
|
|
||||||
index 11ee5e03..2eb2f9fd 100644
|
|
||||||
--- a/poppler/XRef.h
|
|
||||||
+++ b/poppler/XRef.h
|
|
||||||
@@ -68,7 +68,10 @@ struct XRefEntry {
|
|
||||||
|
|
||||||
// Special flags -- available only after xref->scanSpecialFlags() is run
|
|
||||||
Unencrypted, // Entry is stored in unencrypted form (meaningless in unencrypted documents)
|
|
||||||
- DontRewrite // Entry must not be written back in case of full rewrite
|
|
||||||
+ DontRewrite, // Entry must not be written back in case of full rewrite
|
|
||||||
+
|
|
||||||
+ // Regular flag (moved here to preserve values of previous flags)
|
|
||||||
+ Parsing // Entry is currently being parsed
|
|
||||||
};
|
|
||||||
|
|
||||||
inline GBool getFlag(Flag flag) const {
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
|||||||
From e07c8b4784234383cb5ddcf1133ea91a772506e2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Reichold <adam.reichold@t-online.de>
|
|
||||||
Date: Tue, 1 Jan 2019 10:54:40 +0100
|
|
||||||
Subject: [PATCH] Avoid global display profile state becoming an uncontrolled
|
|
||||||
memory leak by enforcing single initialization. Closes #654
|
|
||||||
|
|
||||||
---
|
|
||||||
poppler/GfxState.cc | 9 +++++++++
|
|
||||||
qt5/src/poppler-qt5.h | 4 ++++
|
|
||||||
2 files changed, 13 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/poppler/GfxState.cc b/poppler/GfxState.cc
|
|
||||||
index 87b7ce03..4e3ccbfd 100644
|
|
||||||
--- a/poppler/GfxState.cc
|
|
||||||
+++ b/poppler/GfxState.cc
|
|
||||||
@@ -226,6 +226,10 @@ static unsigned int getCMSNChannels(cmsColorSpaceSignature cs);
|
|
||||||
static cmsHPROFILE loadColorProfile(const char *fileName);
|
|
||||||
|
|
||||||
void GfxColorSpace::setDisplayProfile(void *displayProfileA) {
|
|
||||||
+ if (displayProfile != nullptr) {
|
|
||||||
+ error(errInternal, -1, "The display color profile can only be set once before any rendering is done.");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
displayProfile = displayProfileA;
|
|
||||||
if (displayProfile != nullptr) {
|
|
||||||
cmsHTRANSFORM transform;
|
|
||||||
@@ -249,6 +253,11 @@ void GfxColorSpace::setDisplayProfile(void *displayProfileA) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void GfxColorSpace::setDisplayProfileName(GooString *name) {
|
|
||||||
+ if (displayProfile != nullptr) {
|
|
||||||
+ error(errInternal, -1, "The display color profile can only be set before any rendering is done.");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ delete displayProfileName;
|
|
||||||
displayProfileName = name->copy();
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/qt5/src/poppler-qt5.h b/qt5/src/poppler-qt5.h
|
|
||||||
index 4f06c47e..ddac7dfb 100644
|
|
||||||
--- a/qt5/src/poppler-qt5.h
|
|
||||||
+++ b/qt5/src/poppler-qt5.h
|
|
||||||
@@ -1102,6 +1102,8 @@ delete it;
|
|
||||||
|
|
||||||
\param outputProfileA is a \c cmsHPROFILE of the LCMS library.
|
|
||||||
|
|
||||||
+ \note This should be called before any rendering happens and only once during the lifetime of the current process.
|
|
||||||
+
|
|
||||||
\since 0.12
|
|
||||||
*/
|
|
||||||
void setColorDisplayProfile(void *outputProfileA);
|
|
||||||
@@ -1110,6 +1112,8 @@ delete it;
|
|
||||||
|
|
||||||
\param name is the name of the display profile to set.
|
|
||||||
|
|
||||||
+ \note This should be called before any rendering happens.
|
|
||||||
+
|
|
||||||
\since 0.12
|
|
||||||
*/
|
|
||||||
void setColorDisplayProfileName(const QString &name);
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
|||||||
From 39a251b1b3a3343400a08e2f03c5518a26624626 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Reichold <adam.reichold@t-online.de>
|
|
||||||
Date: Mon, 24 Dec 2018 15:40:38 +0100
|
|
||||||
Subject: [PATCH] Do not try to parse into unallocated XRef entry and return
|
|
||||||
pointer to dummy entry instead. Closes #692 and oss-fuzz/12330
|
|
||||||
|
|
||||||
---
|
|
||||||
poppler/XRef.cc | 27 +++++++++++++++++++++------
|
|
||||||
1 file changed, 21 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/poppler/XRef.cc b/poppler/XRef.cc
|
|
||||||
index 0ec66944..d042d1f4 100644
|
|
||||||
--- a/poppler/XRef.cc
|
|
||||||
+++ b/poppler/XRef.cc
|
|
||||||
@@ -1548,11 +1548,31 @@ void XRef::readXRefUntil(int untilEntryNum, std::vector<int> *xrefStreamObjsNum)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+namespace {
|
|
||||||
+
|
|
||||||
+struct DummyXRefEntry : XRefEntry {
|
|
||||||
+ DummyXRefEntry() {
|
|
||||||
+ offset = 0;
|
|
||||||
+ gen = -1;
|
|
||||||
+ type = xrefEntryNone;
|
|
||||||
+ flags = 0;
|
|
||||||
+ }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+DummyXRefEntry dummyXRefEntry;
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
XRefEntry *XRef::getEntry(int i, GBool complainIfMissing)
|
|
||||||
{
|
|
||||||
if (i >= size || entries[i].type == xrefEntryNone) {
|
|
||||||
|
|
||||||
if ((!xRefStream) && mainXRefEntriesOffset) {
|
|
||||||
+ if (unlikely(i >= capacity)) {
|
|
||||||
+ error(errInternal, -1, "Request for out-of-bounds XRef entry [{0:d}]", i);
|
|
||||||
+ return &dummyXRefEntry;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (!parseEntry(mainXRefEntriesOffset + 20*i, &entries[i])) {
|
|
||||||
error(errSyntaxError, -1, "Failed to parse XRef entry [{0:d}].", i);
|
|
||||||
}
|
|
||||||
@@ -1563,12 +1583,7 @@ XRefEntry *XRef::getEntry(int i, bool complainIfMissing)
|
|
||||||
// We might have reconstructed the xref
|
|
||||||
// Check again i is in bounds
|
|
||||||
if (unlikely(i >= size)) {
|
|
||||||
- static XRefEntry dummy;
|
|
||||||
- dummy.offset = 0;
|
|
||||||
- dummy.gen = -1;
|
|
||||||
- dummy.type = xrefEntryNone;
|
|
||||||
- dummy.flags = 0;
|
|
||||||
- return &dummy;
|
|
||||||
+ return &dummyXRefEntry;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entries[i].type == xrefEntryNone) {
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
|||||||
From 614514f577bbe676f736afcd8065892df8391315 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Marek Kasik <mkasik@redhat.com>
|
|
||||||
Date: Fri, 20 Apr 2018 11:38:13 +0200
|
|
||||||
Subject: [PATCH] Fix crash on missing embedded file
|
|
||||||
|
|
||||||
Check whether an embedded file is actually present in the PDF
|
|
||||||
and show warning in that case.
|
|
||||||
|
|
||||||
https://bugs.freedesktop.org/show_bug.cgi?id=106137
|
|
||||||
https://gitlab.freedesktop.org/poppler/poppler/issues/236
|
|
||||||
---
|
|
||||||
glib/poppler-attachment.cc | 26 +++++++++++++++++---------
|
|
||||||
glib/poppler-document.cc | 3 ++-
|
|
||||||
2 files changed, 19 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/glib/poppler-attachment.cc b/glib/poppler-attachment.cc
|
|
||||||
index c6502e9d..11ba5bb5 100644
|
|
||||||
--- a/glib/poppler-attachment.cc
|
|
||||||
+++ b/glib/poppler-attachment.cc
|
|
||||||
@@ -111,17 +111,25 @@ _poppler_attachment_new (FileSpec *emb_file)
|
|
||||||
attachment->description = _poppler_goo_string_to_utf8 (emb_file->getDescription ());
|
|
||||||
|
|
||||||
embFile = emb_file->getEmbeddedFile();
|
|
||||||
- attachment->size = embFile->size ();
|
|
||||||
+ if (embFile != NULL && embFile->streamObject()->isStream())
|
|
||||||
+ {
|
|
||||||
+ attachment->size = embFile->size ();
|
|
||||||
|
|
||||||
- if (embFile->createDate ())
|
|
||||||
- _poppler_convert_pdf_date_to_gtime (embFile->createDate (), (time_t *)&attachment->ctime);
|
|
||||||
- if (embFile->modDate ())
|
|
||||||
- _poppler_convert_pdf_date_to_gtime (embFile->modDate (), (time_t *)&attachment->mtime);
|
|
||||||
+ if (embFile->createDate ())
|
|
||||||
+ _poppler_convert_pdf_date_to_gtime (embFile->createDate (), (time_t *)&attachment->ctime);
|
|
||||||
+ if (embFile->modDate ())
|
|
||||||
+ _poppler_convert_pdf_date_to_gtime (embFile->modDate (), (time_t *)&attachment->mtime);
|
|
||||||
|
|
||||||
- if (embFile->checksum () && embFile->checksum ()->getLength () > 0)
|
|
||||||
- attachment->checksum = g_string_new_len (embFile->checksum ()->getCString (),
|
|
||||||
- embFile->checksum ()->getLength ());
|
|
||||||
- priv->obj_stream = embFile->streamObject()->copy();
|
|
||||||
+ if (embFile->checksum () && embFile->checksum ()->getLength () > 0)
|
|
||||||
+ attachment->checksum = g_string_new_len (embFile->checksum ()->getCString (),
|
|
||||||
+ embFile->checksum ()->getLength ());
|
|
||||||
+ priv->obj_stream = embFile->streamObject()->copy();
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ g_warning ("Missing stream object for embedded file");
|
|
||||||
+ g_clear_object (&attachment);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return attachment;
|
|
||||||
}
|
|
||||||
diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc
|
|
||||||
index b343eb90..df0aa47f 100644
|
|
||||||
--- a/glib/poppler-document.cc
|
|
||||||
+++ b/glib/poppler-document.cc
|
|
||||||
@@ -666,7 +666,8 @@ poppler_document_get_attachments (PopplerDocument *document)
|
|
||||||
attachment = _poppler_attachment_new (emb_file);
|
|
||||||
delete emb_file;
|
|
||||||
|
|
||||||
- retval = g_list_prepend (retval, attachment);
|
|
||||||
+ if (attachment != NULL)
|
|
||||||
+ retval = g_list_prepend (retval, attachment);
|
|
||||||
}
|
|
||||||
return g_list_reverse (retval);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.17.0
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From de0c0b8324e776f0b851485e0fc9622fc35695b7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Albert Astals Cid <aacid@kde.org>
|
|
||||||
Date: Sat, 29 Dec 2018 01:25:17 +0100
|
|
||||||
Subject: [PATCH] FileSpec: Move the fileSpec.dictLookup call inside
|
|
||||||
fileSpec.isDict if
|
|
||||||
|
|
||||||
Fixes #704
|
|
||||||
---
|
|
||||||
poppler/FileSpec.cc | 9 +++++----
|
|
||||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/poppler/FileSpec.cc b/poppler/FileSpec.cc
|
|
||||||
index 8a8b9e7e..7c12da63 100644
|
|
||||||
--- a/poppler/FileSpec.cc
|
|
||||||
+++ b/poppler/FileSpec.cc
|
|
||||||
@@ -133,11 +133,12 @@ FileSpec::FileSpec(const Object *fileSpecA)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- }
|
|
||||||
|
|
||||||
- obj1 = fileSpec.dictLookup("Desc");
|
|
||||||
- if (obj1.isString())
|
|
||||||
- desc = obj1.getString()->copy();
|
|
||||||
+ obj1 = fileSpec.dictLookup("Desc");
|
|
||||||
+ if (obj1.isString()) {
|
|
||||||
+ desc = obj1.getString()->copy();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
FileSpec::~FileSpec()
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,34 +1,3 @@
|
|||||||
--- poppler-0.67.0/qt4/src/ArthurOutputDev.cc.orig 2018-08-08 10:13:17.127028046 +0200
|
|
||||||
+++ poppler-0.67.0/qt4/src/ArthurOutputDev.cc 2018-08-08 11:13:37.377483041 +0200
|
|
||||||
@@ -68,7 +68,7 @@
|
|
||||||
class SplashOutFontFileID: public SplashFontFileID {
|
|
||||||
public:
|
|
||||||
|
|
||||||
- SplashOutFontFileID(Ref *rA) { r = *rA; }
|
|
||||||
+ SplashOutFontFileID(const Ref *rA) { r = *rA; }
|
|
||||||
|
|
||||||
~SplashOutFontFileID() {}
|
|
||||||
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-annotation.cc.orig 2018-08-08 10:13:17.129028061 +0200
|
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-annotation.cc 2018-08-08 10:44:58.038166746 +0200
|
|
||||||
@@ -534,7 +534,7 @@ QList<Annotation*> AnnotationPrivate::fi
|
|
||||||
MovieObject *movie = new MovieObject( movieann );
|
|
||||||
m->setMovie( movie );
|
|
||||||
// -> movieTitle
|
|
||||||
- GooString * movietitle = movieann->getTitle();
|
|
||||||
+ const GooString * movietitle = movieann->getTitle();
|
|
||||||
if ( movietitle )
|
|
||||||
m->setMovieTitle( QString::fromLatin1( movietitle->getCString() ) );
|
|
||||||
break;
|
|
||||||
@@ -554,7 +554,7 @@ QList<Annotation*> AnnotationPrivate::fi
|
|
||||||
s->setAction( static_cast<Poppler::LinkRendition *>(popplerLink) );
|
|
||||||
|
|
||||||
// -> screenTitle
|
|
||||||
- GooString * screentitle = screenann->getTitle();
|
|
||||||
+ const GooString * screentitle = screenann->getTitle();
|
|
||||||
if ( screentitle )
|
|
||||||
s->setScreenTitle( UnicodeParsedString( screentitle ) );
|
|
||||||
break;
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-document.cc.orig 2018-08-08 10:13:17.130028069 +0200
|
--- poppler-0.67.0/qt4/src/poppler-document.cc.orig 2018-08-08 10:13:17.130028069 +0200
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-document.cc 2018-08-08 11:14:58.301690615 +0200
|
+++ poppler-0.67.0/qt4/src/poppler-document.cc 2018-08-08 11:14:58.301690615 +0200
|
||||||
@@ -605,7 +605,7 @@ namespace Poppler {
|
@@ -605,7 +605,7 @@ namespace Poppler {
|
||||||
@ -86,90 +55,30 @@
|
|||||||
{
|
{
|
||||||
- GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->modDate() : NULL;
|
- GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->modDate() : NULL;
|
||||||
+ const GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->modDate() : NULL;
|
+ const GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->modDate() : NULL;
|
||||||
return goo ? convertDate(goo->getCString()) : QDateTime();
|
return goo ? convertDate(goo->c_str()) : QDateTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
QDateTime EmbeddedFile::createDate() const
|
QDateTime EmbeddedFile::createDate() const
|
||||||
{
|
{
|
||||||
- GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->createDate() : NULL;
|
- GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->createDate() : NULL;
|
||||||
+ const GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->createDate() : NULL;
|
+ const GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->createDate() : NULL;
|
||||||
return goo ? convertDate(goo->getCString()) : QDateTime();
|
return goo ? convertDate(goo->c_str()) : QDateTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray EmbeddedFile::checksum() const
|
QByteArray EmbeddedFile::checksum() const
|
||||||
{
|
{
|
||||||
- GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->checksum() : NULL;
|
- GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->checksum() : NULL;
|
||||||
+ const GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->checksum() : NULL;
|
+ const GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->checksum() : NULL;
|
||||||
return goo ? QByteArray::fromRawData(goo->getCString(), goo->getLength()) : QByteArray();
|
return goo ? QByteArray::fromRawData(goo->c_str(), goo->getLength()) : QByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString EmbeddedFile::mimeType() const
|
QString EmbeddedFile::mimeType() const
|
||||||
{
|
{
|
||||||
- GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->mimeType() : NULL;
|
- GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->mimeType() : NULL;
|
||||||
+ const GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->mimeType() : NULL;
|
+ const GooString *goo = m_embeddedFile->embFile() ? m_embeddedFile->embFile()->mimeType() : NULL;
|
||||||
return goo ? QString(goo->getCString()) : QString();
|
return goo ? QString(goo->c_str()) : QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-form.cc.orig 2018-08-08 10:13:17.130028069 +0200
|
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-form.cc 2018-08-08 10:51:46.240825862 +0200
|
|
||||||
@@ -104,7 +104,7 @@ int FormField::id() const
|
|
||||||
QString FormField::name() const
|
|
||||||
{
|
|
||||||
QString name;
|
|
||||||
- if (GooString *goo = m_formData->fm->getPartialName())
|
|
||||||
+ if (const GooString *goo = m_formData->fm->getPartialName())
|
|
||||||
{
|
|
||||||
name = QString::fromLatin1(goo->getCString());
|
|
||||||
}
|
|
||||||
@@ -114,7 +114,7 @@ QString FormField::name() const
|
|
||||||
QString FormField::fullyQualifiedName() const
|
|
||||||
{
|
|
||||||
QString name;
|
|
||||||
- if (GooString *goo = m_formData->fm->getFullyQualifiedName())
|
|
||||||
+ if (const GooString *goo = m_formData->fm->getFullyQualifiedName())
|
|
||||||
{
|
|
||||||
name = UnicodeParsedString(goo);
|
|
||||||
}
|
|
||||||
@@ -124,7 +124,7 @@ QString FormField::fullyQualifiedName()
|
|
||||||
QString FormField::uiName() const
|
|
||||||
{
|
|
||||||
QString name;
|
|
||||||
- if (GooString *goo = m_formData->fm->getAlternateUiName())
|
|
||||||
+ if (const GooString *goo = m_formData->fm->getAlternateUiName())
|
|
||||||
{
|
|
||||||
name = QString::fromLatin1(goo->getCString());
|
|
||||||
}
|
|
||||||
@@ -271,7 +271,7 @@ FormFieldText::TextType FormFieldText::t
|
|
||||||
|
|
||||||
QString FormFieldText::text() const
|
|
||||||
{
|
|
||||||
- GooString *goo = static_cast<FormWidgetText*>(m_formData->fm)->getContent();
|
|
||||||
+ const GooString *goo = static_cast<FormWidgetText*>(m_formData->fm)->getContent();
|
|
||||||
return UnicodeParsedString(goo);
|
|
||||||
}
|
|
||||||
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-link.cc.orig 2018-08-08 10:13:17.131028077 +0200
|
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-link.cc 2018-08-08 10:59:12.395546232 +0200
|
|
||||||
@@ -232,7 +232,7 @@ class LinkMoviePrivate : public LinkPriv
|
|
||||||
: d( new LinkDestinationPrivate )
|
|
||||||
{
|
|
||||||
bool deleteDest = false;
|
|
||||||
- LinkDest *ld = data.ld;
|
|
||||||
+ const LinkDest *ld = data.ld;
|
|
||||||
|
|
||||||
if ( data.namedDest && !ld && !data.externalDest )
|
|
||||||
{
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-media.cc.orig 2018-08-08 10:13:17.131028077 +0200
|
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-media.cc 2018-08-08 11:10:51.802056415 +0200
|
|
||||||
@@ -151,7 +151,7 @@ QSize
|
|
||||||
MediaRendition::size() const
|
|
||||||
{
|
|
||||||
Q_D( const MediaRendition );
|
|
||||||
- MediaParameters *mp = 0;
|
|
||||||
+ const MediaParameters *mp = 0;
|
|
||||||
|
|
||||||
if (d->rendition->getBEParameters())
|
|
||||||
mp = d->rendition->getBEParameters();
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-movie.cc.orig 2018-08-08 10:13:17.131028077 +0200
|
--- poppler-0.67.0/qt4/src/poppler-movie.cc.orig 2018-08-08 10:13:17.131028077 +0200
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-movie.cc 2018-08-08 10:52:41.284914743 +0200
|
+++ poppler-0.67.0/qt4/src/poppler-movie.cc 2018-08-08 10:52:41.284914743 +0200
|
||||||
@@ -57,7 +57,7 @@ MovieObject::MovieObject( AnnotMovie *an
|
@@ -57,7 +57,7 @@ MovieObject::MovieObject( AnnotMovie *an
|
||||||
@ -187,154 +96,9 @@
|
|||||||
{
|
{
|
||||||
- GooString * goo = m_movieData->m_movieObj->getFileName();
|
- GooString * goo = m_movieData->m_movieObj->getFileName();
|
||||||
+ const GooString * goo = m_movieData->m_movieObj->getFileName();
|
+ const GooString * goo = m_movieData->m_movieObj->getFileName();
|
||||||
return goo ? QString( goo->getCString() ) : QString();
|
return goo ? QString( goo->c_str() ) : QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-optcontent.cc.orig 2018-08-08 10:13:17.131028077 +0200
|
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-optcontent.cc 2018-08-08 10:53:34.222000220 +0200
|
|
||||||
@@ -213,7 +213,7 @@ namespace Poppler
|
|
||||||
} else if ( (orderItem.isArray()) && (orderItem.arrayGetLength() > 0) ) {
|
|
||||||
parseOrderArray(lastItem, orderItem.getArray());
|
|
||||||
} else if ( orderItem.isString() ) {
|
|
||||||
- GooString *label = orderItem.getString();
|
|
||||||
+ const GooString *label = orderItem.getString();
|
|
||||||
OptContentItem *header = new OptContentItem ( UnicodeParsedString ( label ) );
|
|
||||||
m_headerOptContentItems.append( header );
|
|
||||||
addChild( parentNode, header );
|
|
||||||
@@ -396,7 +396,7 @@ namespace Poppler
|
|
||||||
|
|
||||||
QSet<OptContentItem *> changedItems;
|
|
||||||
|
|
||||||
- GooList *statesList = popplerLinkOCGState->getStateList();
|
|
||||||
+ const GooList *statesList = popplerLinkOCGState->getStateList();
|
|
||||||
for (int i = 0; i < statesList->getLength(); ++i) {
|
|
||||||
::LinkOCGState::StateList *stateList = (::LinkOCGState::StateList*)statesList->get(i);
|
|
||||||
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-page.cc.orig 2018-08-08 10:13:17.132028085 +0200
|
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-page.cc 2018-08-08 10:54:22.980078936 +0200
|
|
||||||
@@ -103,7 +103,7 @@ Link* PageData::convertLinkActionToLink(
|
|
||||||
case actionLaunch:
|
|
||||||
{
|
|
||||||
LinkLaunch * e = (LinkLaunch *)a;
|
|
||||||
- GooString * p = e->getParams();
|
|
||||||
+ const GooString * p = e->getParams();
|
|
||||||
popplerLink = new LinkExecute( linkArea, e->getFileName()->getCString(), p ? p->getCString() : 0 );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-private.cc.orig 2018-08-08 10:13:17.132028085 +0200
|
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-private.cc 2018-08-08 11:03:25.964955666 +0200
|
|
||||||
@@ -73,7 +73,7 @@ namespace Debug {
|
|
||||||
(*Debug::debugFunction)(emsg, Debug::debugClosure);
|
|
||||||
}
|
|
||||||
|
|
||||||
- QString unicodeToQString(Unicode* u, int len) {
|
|
||||||
+ QString unicodeToQString(const Unicode* u, int len) {
|
|
||||||
if (!utf8Map)
|
|
||||||
{
|
|
||||||
GooString enc("UTF-8");
|
|
||||||
@@ -98,11 +98,11 @@ namespace Debug {
|
|
||||||
return QString::fromUtf8(convertedStr.getCString(), convertedStr.getLength());
|
|
||||||
}
|
|
||||||
|
|
||||||
- QString UnicodeParsedString(GooString *s1) {
|
|
||||||
+ QString UnicodeParsedString(const GooString *s1) {
|
|
||||||
if ( !s1 || s1->getLength() == 0 )
|
|
||||||
return QString();
|
|
||||||
|
|
||||||
- char *cString;
|
|
||||||
+ const char *cString;
|
|
||||||
int stringLength;
|
|
||||||
bool deleteCString;
|
|
||||||
if ( ( s1->getChar(0) & 0xff ) == 0xfe && ( s1->getLength() > 1 && ( s1->getChar(1) & 0xff ) == 0xff ) )
|
|
||||||
@@ -162,7 +162,7 @@ namespace Debug {
|
|
||||||
return QStringToUnicodeGooString(dt.toUTC().toString("yyyyMMddhhmmss+00'00'"));
|
|
||||||
}
|
|
||||||
|
|
||||||
- static void linkActionToTocItem( ::LinkAction * a, DocumentData * doc, QDomElement * e )
|
|
||||||
+ static void linkActionToTocItem( const ::LinkAction * a, DocumentData * doc, QDomElement * e )
|
|
||||||
{
|
|
||||||
if ( !a || !e )
|
|
||||||
return;
|
|
||||||
@@ -172,14 +172,14 @@ namespace Debug {
|
|
||||||
case actionGoTo:
|
|
||||||
{
|
|
||||||
// page number is contained/referenced in a LinkGoTo
|
|
||||||
- LinkGoTo * g = static_cast< LinkGoTo * >( a );
|
|
||||||
- LinkDest * destination = g->getDest();
|
|
||||||
+ const LinkGoTo * g = static_cast< const LinkGoTo * >( a );
|
|
||||||
+ const LinkDest * destination = g->getDest();
|
|
||||||
if ( !destination && g->getNamedDest() )
|
|
||||||
{
|
|
||||||
// no 'destination' but an internal 'named reference'. we could
|
|
||||||
// get the destination for the page now, but it's VERY time consuming,
|
|
||||||
// so better storing the reference and provide the viewport on demand
|
|
||||||
- GooString *s = g->getNamedDest();
|
|
||||||
+ const GooString *s = g->getNamedDest();
|
|
||||||
QChar *charArray = new QChar[s->getLength()];
|
|
||||||
for (int i = 0; i < s->getLength(); ++i) charArray[i] = QChar(s->getCString()[i]);
|
|
||||||
QString aux(charArray, s->getLength());
|
|
||||||
@@ -196,14 +196,14 @@ namespace Debug {
|
|
||||||
case actionGoToR:
|
|
||||||
{
|
|
||||||
// page number is contained/referenced in a LinkGoToR
|
|
||||||
- LinkGoToR * g = static_cast< LinkGoToR * >( a );
|
|
||||||
- LinkDest * destination = g->getDest();
|
|
||||||
+ const LinkGoToR * g = static_cast< const LinkGoToR * >( a );
|
|
||||||
+ const LinkDest * destination = g->getDest();
|
|
||||||
if ( !destination && g->getNamedDest() )
|
|
||||||
{
|
|
||||||
// no 'destination' but an internal 'named reference'. we could
|
|
||||||
// get the destination for the page now, but it's VERY time consuming,
|
|
||||||
// so better storing the reference and provide the viewport on demand
|
|
||||||
- GooString *s = g->getNamedDest();
|
|
||||||
+ const GooString *s = g->getNamedDest();
|
|
||||||
QChar *charArray = new QChar[s->getLength()];
|
|
||||||
for (int i = 0; i < s->getLength(); ++i) charArray[i] = QChar(s->getCString()[i]);
|
|
||||||
QString aux(charArray, s->getLength());
|
|
||||||
@@ -220,7 +220,7 @@ namespace Debug {
|
|
||||||
}
|
|
||||||
case actionURI:
|
|
||||||
{
|
|
||||||
- LinkURI * u = static_cast< LinkURI * >( a );
|
|
||||||
+ const LinkURI * u = static_cast< const LinkURI * >( a );
|
|
||||||
e->setAttribute( "DestinationURI", u->getURI()->getCString() );
|
|
||||||
}
|
|
||||||
default: ;
|
|
||||||
@@ -260,7 +260,7 @@ namespace Debug {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
- void DocumentData::addTocChildren( QDomDocument * docSyn, QDomNode * parent, GooList * items )
|
|
||||||
+ void DocumentData::addTocChildren( QDomDocument * docSyn, QDomNode * parent, const GooList * items )
|
|
||||||
{
|
|
||||||
int numItems = items->getLength();
|
|
||||||
for ( int i = 0; i < numItems; ++i )
|
|
||||||
@@ -270,7 +270,7 @@ namespace Debug {
|
|
||||||
|
|
||||||
// 1. create element using outlineItem's title as tagName
|
|
||||||
QString name;
|
|
||||||
- Unicode * uniChar = outlineItem->getTitle();
|
|
||||||
+ const Unicode * uniChar = outlineItem->getTitle();
|
|
||||||
int titleLength = outlineItem->getTitleLength();
|
|
||||||
name = unicodeToQString(uniChar, titleLength);
|
|
||||||
if ( name.isEmpty() )
|
|
||||||
@@ -280,14 +280,14 @@ namespace Debug {
|
|
||||||
parent->appendChild( item );
|
|
||||||
|
|
||||||
// 2. find the page the link refers to
|
|
||||||
- ::LinkAction * a = outlineItem->getAction();
|
|
||||||
+ const ::LinkAction * a = outlineItem->getAction();
|
|
||||||
linkActionToTocItem( a, this, &item );
|
|
||||||
|
|
||||||
item.setAttribute( "Open", QVariant( (bool)outlineItem->isOpen() ).toString() );
|
|
||||||
|
|
||||||
// 3. recursively descend over children
|
|
||||||
outlineItem->open();
|
|
||||||
- GooList * children = outlineItem->getKids();
|
|
||||||
+ const GooList * children = outlineItem->getKids();
|
|
||||||
if ( children )
|
|
||||||
addTocChildren( docSyn, &item, children );
|
|
||||||
}
|
|
||||||
--- poppler-0.67.0/qt4/src/poppler-private.h.orig 2018-08-08 10:13:17.132028085 +0200
|
--- poppler-0.67.0/qt4/src/poppler-private.h.orig 2018-08-08 10:13:17.132028085 +0200
|
||||||
+++ poppler-0.67.0/qt4/src/poppler-private.h 2018-08-08 11:00:30.836672893 +0200
|
+++ poppler-0.67.0/qt4/src/poppler-private.h 2018-08-08 11:00:30.836672893 +0200
|
||||||
@@ -54,9 +54,9 @@ class FormWidget;
|
@@ -54,9 +54,9 @@ class FormWidget;
|
||||||
@ -399,6 +163,6 @@
|
|||||||
|
|
||||||
- GooString * goo = m_soundData->m_soundObj->getFileName();
|
- GooString * goo = m_soundData->m_soundObj->getFileName();
|
||||||
+ const GooString * goo = m_soundData->m_soundObj->getFileName();
|
+ const GooString * goo = m_soundData->m_soundObj->getFileName();
|
||||||
return goo ? QString( goo->getCString() ) : QString();
|
return goo ? QString( goo->c_str() ) : QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
From 7f87dc10b6adccd6d1b977a28b064add254aa2da Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Reichold <adam.reichold@t-online.de>
|
|
||||||
Date: Thu, 27 Dec 2018 11:54:53 +0100
|
|
||||||
Subject: [PATCH] Do not try to construct invalid rich media annotation assets.
|
|
||||||
Closes #703
|
|
||||||
|
|
||||||
---
|
|
||||||
poppler/Annot.cc | 24 +++++++++++++-----------
|
|
||||||
1 file changed, 13 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/poppler/Annot.cc b/poppler/Annot.cc
|
|
||||||
index 2e4770ab..1750dc70 100644
|
|
||||||
--- a/poppler/Annot.cc
|
|
||||||
+++ b/poppler/Annot.cc
|
|
||||||
@@ -6418,20 +6418,22 @@ AnnotRichMedia::Content::Content(Dict *dict) {
|
|
||||||
if (obj1.isDict()) {
|
|
||||||
Object obj2 = obj1.getDict()->lookup("Names");
|
|
||||||
if (obj2.isArray()) {
|
|
||||||
- nAssets = obj2.arrayGetLength() / 2;
|
|
||||||
+ const int length = obj2.arrayGetLength() / 2;
|
|
||||||
|
|
||||||
- assets = (Asset **)gmallocn(nAssets, sizeof(Asset *));
|
|
||||||
+ assets = (Asset **)gmallocn(length, sizeof(Asset *));
|
|
||||||
+ for (int i = 0; i < length; ++i) {
|
|
||||||
+ Object objKey = obj2.arrayGet(2 * i);
|
|
||||||
+ Object objVal = obj2.arrayGet(2 * i + 1);
|
|
||||||
|
|
||||||
- int counter = 0;
|
|
||||||
- for (int i = 0; i < nAssets; ++i) {
|
|
||||||
- assets[counter] = new AnnotRichMedia::Asset;
|
|
||||||
-
|
|
||||||
- Object objKey = obj2.arrayGet(i * 2);
|
|
||||||
- assets[counter]->fileSpec = obj2.arrayGet(i * 2 + 1);
|
|
||||||
-
|
|
||||||
- assets[counter]->name = new GooString( objKey.getString() );
|
|
||||||
- ++counter;
|
|
||||||
+ if (!objKey.isString() || objVal.isNull()) {
|
|
||||||
+ error(errSyntaxError, -1, "Bad Annot Asset");
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
+ assets[nAssets] = new AnnotRichMedia::Asset;
|
|
||||||
+ assets[nAssets]->name = new GooString( objKey.getString() );
|
|
||||||
+ assets[nAssets]->fileSpec = std::move(objVal);
|
|
||||||
+ ++nAssets;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
From 6912e06d9ab19ba28991b5cab3319d61d856bd6d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Reichold <adam.reichold@t-online.de>
|
|
||||||
Date: Tue, 6 Nov 2018 09:00:02 +0100
|
|
||||||
Subject: [PATCH] Check for stream before calling stream methods when saving an
|
|
||||||
embedded file.
|
|
||||||
|
|
||||||
Closes #659
|
|
||||||
---
|
|
||||||
poppler/FileSpec.cc | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/poppler/FileSpec.cc b/poppler/FileSpec.cc
|
|
||||||
index 7479c2d2..d5543041 100644
|
|
||||||
--- a/poppler/FileSpec.cc
|
|
||||||
+++ b/poppler/FileSpec.cc
|
|
||||||
@@ -93,6 +93,9 @@ bool EmbFile::save(const char *path) {
|
|
||||||
GBool EmbFile::save2(FILE *f) {
|
|
||||||
int c;
|
|
||||||
|
|
||||||
+ if (unlikely(!m_objStr.isStream()))
|
|
||||||
+ return false;
|
|
||||||
+
|
|
||||||
m_objStr.streamReset();
|
|
||||||
while ((c = m_objStr.streamGetChar()) != EOF) {
|
|
||||||
fputc(c, f);
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
@ -1,81 +0,0 @@
|
|||||||
From d2f5d424ba8752f9a9e9dad410546ec1b46caa0a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Reichold <adam.reichold@t-online.de>
|
|
||||||
Date: Tue, 6 Nov 2018 09:08:06 +0100
|
|
||||||
Subject: [PATCH] pdfdetach: Check for valid file name of embedded file before
|
|
||||||
using it to determine save path.
|
|
||||||
|
|
||||||
Closes #660
|
|
||||||
---
|
|
||||||
utils/pdfdetach.cc | 24 ++++++++++++++++++------
|
|
||||||
1 file changed, 18 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/utils/pdfdetach.cc b/utils/pdfdetach.cc
|
|
||||||
index a8720c64..71fa8608 100644
|
|
||||||
--- a/utils/pdfdetach.cc
|
|
||||||
+++ b/utils/pdfdetach.cc
|
|
||||||
@@ -191,14 +191,18 @@ int main(int argc, char *argv[]) {
|
|
||||||
fileSpec = static_cast<FileSpec *>(embeddedFiles->get(i));
|
|
||||||
printf("%d: ", i+1);
|
|
||||||
s1 = fileSpec->getFileName();
|
|
||||||
- if ((s1->getChar(0) & 0xff) == 0xfe && (s1->getChar(1) & 0xff) == 0xff) {
|
|
||||||
+ if (!s1) {
|
|
||||||
+ exitCode = 3;
|
|
||||||
+ goto err2;
|
|
||||||
+ }
|
|
||||||
+ if (s1->hasUnicodeMarker()) {
|
|
||||||
isUnicode = gTrue;
|
|
||||||
j = 2;
|
|
||||||
} else {
|
|
||||||
isUnicode = gFalse;
|
|
||||||
j = 0;
|
|
||||||
}
|
|
||||||
- while (j < fileSpec->getFileName()->getLength()) {
|
|
||||||
+ while (j < s1->getLength()) {
|
|
||||||
if (isUnicode) {
|
|
||||||
u = ((s1->getChar(j) & 0xff) << 8) | (s1->getChar(j+1) & 0xff);
|
|
||||||
j += 2;
|
|
||||||
@@ -228,14 +232,18 @@ int main(int argc, char *argv[]) {
|
|
||||||
p = path;
|
|
||||||
}
|
|
||||||
s1 = fileSpec->getFileName();
|
|
||||||
- if ((s1->getChar(0) & 0xff) == 0xfe && (s1->getChar(1) & 0xff) == 0xff) {
|
|
||||||
+ if (!s1) {
|
|
||||||
+ exitCode = 3;
|
|
||||||
+ goto err2;
|
|
||||||
+ }
|
|
||||||
+ if (s1->hasUnicodeMarker()) {
|
|
||||||
isUnicode = gTrue;
|
|
||||||
j = 2;
|
|
||||||
} else {
|
|
||||||
isUnicode = gFalse;
|
|
||||||
j = 0;
|
|
||||||
}
|
|
||||||
- while (j < fileSpec->getFileName()->getLength()) {
|
|
||||||
+ while (j < s1->getLength()) {
|
|
||||||
if (isUnicode) {
|
|
||||||
u = ((s1->getChar(j) & 0xff) << 8) | (s1->getChar(j+1) & 0xff);
|
|
||||||
j += 2;
|
|
||||||
@@ -276,14 +284,18 @@ int main(int argc, char *argv[]) {
|
|
||||||
} else {
|
|
||||||
p = path;
|
|
||||||
s1 = fileSpec->getFileName();
|
|
||||||
- if ((s1->getChar(0) & 0xff) == 0xfe && (s1->getChar(1) & 0xff) == 0xff) {
|
|
||||||
+ if (!s1) {
|
|
||||||
+ exitCode = 3;
|
|
||||||
+ goto err2;
|
|
||||||
+ }
|
|
||||||
+ if (s1->hasUnicodeMarker()) {
|
|
||||||
isUnicode = gTrue;
|
|
||||||
j = 2;
|
|
||||||
} else {
|
|
||||||
isUnicode = gFalse;
|
|
||||||
j = 0;
|
|
||||||
}
|
|
||||||
- while (j < fileSpec->getFileName()->getLength()) {
|
|
||||||
+ while (j < s1->getLength()) {
|
|
||||||
if (isUnicode) {
|
|
||||||
u = ((s1->getChar(j) & 0xff) << 8) | (s1->getChar(j+1) & 0xff);
|
|
||||||
j += 2;
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
From 77a30e94d96220d7e22dff5b3f0a7f296f01b118 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Reichold <adam.reichold@t-online.de>
|
|
||||||
Date: Tue, 6 Nov 2018 09:13:41 +0100
|
|
||||||
Subject: [PATCH] pdfdetach: Check for valid embedded file before trying to
|
|
||||||
save it.
|
|
||||||
|
|
||||||
Closes #661
|
|
||||||
---
|
|
||||||
utils/pdfdetach.cc | 14 ++++++++++++--
|
|
||||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/utils/pdfdetach.cc b/utils/pdfdetach.cc
|
|
||||||
index 846584a4..a8720c64 100644
|
|
||||||
--- a/utils/pdfdetach.cc
|
|
||||||
+++ b/utils/pdfdetach.cc
|
|
||||||
@@ -251,7 +251,12 @@ int main(int argc, char *argv[]) {
|
|
||||||
}
|
|
||||||
*p = '\0';
|
|
||||||
|
|
||||||
- if (!fileSpec->getEmbeddedFile()->save(path)) {
|
|
||||||
+ auto *embFile = fileSpec->getEmbeddedFile();
|
|
||||||
+ if (!embFile || !embFile->isOk()) {
|
|
||||||
+ exitCode = 3;
|
|
||||||
+ goto err2;
|
|
||||||
+ }
|
|
||||||
+ if (!embFile->save(path)) {
|
|
||||||
error(errIO, -1, "Error saving embedded file as '{0:s}'", p);
|
|
||||||
exitCode = 2;
|
|
||||||
goto err2;
|
|
||||||
@@ -296,7 +301,12 @@ int main(int argc, char *argv[]) {
|
|
||||||
p = path;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (!fileSpec->getEmbeddedFile()->save(p)) {
|
|
||||||
+ auto *embFile = fileSpec->getEmbeddedFile();
|
|
||||||
+ if (!embFile || !embFile->isOk()) {
|
|
||||||
+ exitCode = 3;
|
|
||||||
+ goto err2;
|
|
||||||
+ }
|
|
||||||
+ if (!embFile->save(p)) {
|
|
||||||
error(errIO, -1, "Error saving embedded file as '{0:s}'", p);
|
|
||||||
exitCode = 2;
|
|
||||||
goto err2;
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
44
poppler.spec
44
poppler.spec
@ -1,15 +1,15 @@
|
|||||||
%global test_sha 0d2bfd4af4c76a3bac27ccaff793d9129df7b57a
|
%global test_sha 45f55f1e03b9bf3fbd334c31776b6f5e472889ec
|
||||||
%global test_date 2009-05-13
|
%global test_date 2018-12-18
|
||||||
|
|
||||||
Summary: PDF rendering library
|
Summary: PDF rendering library
|
||||||
Name: poppler
|
Name: poppler
|
||||||
Version: 0.67.0
|
Version: 0.73.0
|
||||||
Release: 10%{?dist}
|
Release: 1%{?dist}
|
||||||
License: (GPLv2 or GPLv3) and GPLv2+ and LGPLv2+ and MIT
|
License: (GPLv2 or GPLv3) and GPLv2+ and LGPLv2+ and MIT
|
||||||
URL: http://poppler.freedesktop.org/
|
URL: http://poppler.freedesktop.org/
|
||||||
Source0: http://poppler.freedesktop.org/poppler-%{version}.tar.xz
|
Source0: http://poppler.freedesktop.org/poppler-%{version}.tar.xz
|
||||||
# git archive --prefix test/
|
# git archive --prefix test/
|
||||||
Source1: %{name}-test-%{test_date}_%{test_sha}.tar.xz
|
Source1: %{name}-test-%{test_date}-%{test_sha}.tar.xz
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1185007
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1185007
|
||||||
Patch0: poppler-0.30.0-rotated-words-selection.patch
|
Patch0: poppler-0.30.0-rotated-words-selection.patch
|
||||||
@ -22,33 +22,6 @@ Patch6: poppler-0.63.0-tiling-patterns.patch
|
|||||||
|
|
||||||
Patch7: poppler-0.67.0-qt4-const.patch
|
Patch7: poppler-0.67.0-qt4-const.patch
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1569334
|
|
||||||
Patch8: poppler-0.67.0-embedded-file-check.patch
|
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1626618
|
|
||||||
Patch9: poppler-0.67.0-cycles-in-pdf-parsing.patch
|
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1649435
|
|
||||||
Patch10: poppler-0.67.0-stream-check.patch
|
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1649440
|
|
||||||
Patch11: poppler-0.67.0-valid-embedded-file.patch
|
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1649450
|
|
||||||
Patch12: poppler-0.67.0-valid-embedded-file-name.patch
|
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1665259
|
|
||||||
Patch13: poppler-0.67.0-rich-media-annotation.patch
|
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1665263
|
|
||||||
Patch14: poppler-0.67.0-filespec.patch
|
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1665266
|
|
||||||
Patch15: poppler-0.67.0-dummy-xref-entry.patch
|
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1646546
|
|
||||||
Patch16: poppler-0.67.0-display-profile.patch
|
|
||||||
|
|
||||||
BuildRequires: cmake
|
BuildRequires: cmake
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: gettext-devel
|
BuildRequires: gettext-devel
|
||||||
@ -187,7 +160,7 @@ export CC="gcc -fPIC" # hack to make the cmake call pass
|
|||||||
-DENABLE_DCTDECODER=libjpeg \
|
-DENABLE_DCTDECODER=libjpeg \
|
||||||
-DENABLE_GTK_DOC=ON \
|
-DENABLE_GTK_DOC=ON \
|
||||||
-DENABLE_LIBOPENJPEG=openjpeg2 \
|
-DENABLE_LIBOPENJPEG=openjpeg2 \
|
||||||
-DENABLE_XPDF_HEADERS=ON \
|
-DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
|
||||||
-DENABLE_ZLIB=OFF \
|
-DENABLE_ZLIB=OFF \
|
||||||
..
|
..
|
||||||
unset CC
|
unset CC
|
||||||
@ -222,7 +195,7 @@ test "$(pkg-config --modversion poppler-splash)" = "%{version}"
|
|||||||
%files
|
%files
|
||||||
%doc README
|
%doc README
|
||||||
%license COPYING
|
%license COPYING
|
||||||
%{_libdir}/libpoppler.so.78*
|
%{_libdir}/libpoppler.so.84*
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%{_libdir}/pkgconfig/poppler.pc
|
%{_libdir}/pkgconfig/poppler.pc
|
||||||
@ -279,6 +252,9 @@ test "$(pkg-config --modversion poppler-splash)" = "%{version}"
|
|||||||
%{_mandir}/man1/*
|
%{_mandir}/man1/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 25 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-1
|
||||||
|
- Update to 0.73.0
|
||||||
|
|
||||||
* Tue Jan 22 2019 Marek Kasik <mkasik@redhat.com> - 0.67.0-10
|
* Tue Jan 22 2019 Marek Kasik <mkasik@redhat.com> - 0.67.0-10
|
||||||
- Avoid global display profile state becoming an uncontrolled
|
- Avoid global display profile state becoming an uncontrolled
|
||||||
- memory leak
|
- memory leak
|
||||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (poppler-0.67.0.tar.xz) = 36584c62970ae0ae7807687f9c0523560ae92ac323949be8916a0e8dc6e691633e55cdd76c6026253c337aed8a4b43a7759a3de74c9ec606654f65379fb0f206
|
SHA512 (poppler-0.73.0.tar.xz) = 6924a343032573504a0039c56a6263cd1183fa6aca75966fe1f084bd19da78553e455e541a3693896c1ed0c3865f11c11758a0f5a66b2f6cd48ac8a7eccf891a
|
||||||
SHA512 (poppler-test-2009-05-13_0d2bfd4af4c76a3bac27ccaff793d9129df7b57a.tar.xz) = f8ce114357043a893100de2d52ada8bd850148d19f0e8c889988ea97e9a92313f0545c0b88ef32a1ce7f0e9e58edc1a8c9066278c20b7718ca619913fd4bfb3c
|
SHA512 (poppler-test-2018-12-18-45f55f1e03b9bf3fbd334c31776b6f5e472889ec.tar.xz) = fa1d8c92ca5bc9ebd7453dfb78f34fb44d014621fe698aa4a3fa9bd17bd0d302ca6ba36f4dd46a1ef030c0b7a30729d4bacb6d01c5c67d429c897e4f5ab331e8
|
||||||
|
Loading…
Reference in New Issue
Block a user