Compare commits

..

No commits in common. "c8" and "c10s" have entirely different histories.
c8 ... c10s

20 changed files with 408 additions and 2099 deletions

20
.gitignore vendored
View File

@ -1,2 +1,18 @@
SOURCES/poppler-20.11.0.tar.xz /poppler-test-2009-05-13_0d2bfd4af4c76a3bac27ccaff793d9129df7b57a.tar.xz
SOURCES/poppler-test-2009-05-13_0d2bfd4af4c76a3bac27ccaff793d9129df7b57a.tar.xz /poppler-0.61.1.tar.xz
/poppler-0.62.0.tar.xz
/poppler-0.63.0.tar.xz
/poppler-0.67.0.tar.xz
/poppler-0.73.0.tar.xz
/poppler-test-2018-12-18-45f55f1e03b9bf3fbd334c31776b6f5e472889ec.tar.xz
/poppler-0.84.0.tar.xz
/poppler-0.90.0.tar.xz
/poppler-test-2021-01-11-03a4b9eb854a06a83c465e82de601796c458bbe9.tar.xz
/poppler-21.01.0.tar.xz
/poppler-21.07.0.tar.xz
/poppler-21.08.0.tar.xz
/poppler-22.01.0.tar.xz
/poppler-22.08.0.tar.xz
/poppler-23.02.0.tar.xz
/poppler-23.08.0.tar.xz
/poppler-24.02.0.tar.xz

View File

@ -1,2 +0,0 @@
0aa751121aed6ee2220ef3ea16b9df8f9b2e81c1 SOURCES/poppler-20.11.0.tar.xz
b58229322eb8f44a2bb1d98114b9fa3dfbef6a0a SOURCES/poppler-test-2009-05-13_0d2bfd4af4c76a3bac27ccaff793d9129df7b57a.tar.xz

View File

@ -1,279 +0,0 @@
From 0ab1f29d4ce315b0fca260c0e0f3007024d00342 Mon Sep 17 00:00:00 2001
From: Marek Kasik <mkasik@redhat.com>
Date: Tue, 28 Jan 2014 15:13:24 +0100
Subject: [PATCH] TextOutputDev: Respect orientation when selecting words
Take rotation into account when visiting selection.
This doesn't fix all problems (there are still problems
on line and block levels).
https://bugs.freedesktop.org/show_bug.cgi?id=16619
---
poppler/TextOutputDev.cc | 193 ++++++++++++++++++++++++++++++++++++-----------
1 file changed, 150 insertions(+), 43 deletions(-)
diff --git a/poppler/TextOutputDev.cc b/poppler/TextOutputDev.cc
index 7c2ca78..e93908c 100644
--- a/poppler/TextOutputDev.cc
+++ b/poppler/TextOutputDev.cc
@@ -178,6 +178,12 @@
// to read the underlying image. Issue #157
#define glyphlessSelectionOpacity 0.4
+// Returns whether x is between a and b or equal to a or b.
+// a and b don't need to be sorted.
+#define XBetweenAB(x,a,b) (!(((x) > (a) && (x) > (b)) || \
+ ((x) < (a) && (x) < (b))) ? \
+ true : false)
+
namespace {
inline bool isAscii7(Unicode uchar)
@@ -4411,11 +4417,37 @@ void TextSelectionSizer::visitLine (TextLine *line,
PDFRectangle *rect;
double x1, y1, x2, y2, margin;
- margin = (line->yMax - line->yMin) / 8;
- x1 = line->edge[edge_begin];
- y1 = line->yMin - margin;
- x2 = line->edge[edge_end];
- y2 = line->yMax + margin;
+ switch (line->rot) {
+ default:
+ case 0:
+ margin = (line->yMax - line->yMin) / 8;
+ x1 = line->edge[edge_begin];
+ x2 = line->edge[edge_end];
+ y1 = line->yMin - margin;
+ y2 = line->yMax + margin;
+ break;
+ case 1:
+ margin = (line->xMax - line->xMin) / 8;
+ x1 = line->xMin - margin;
+ x2 = line->xMax + margin;
+ y1 = line->edge[edge_begin];
+ y2 = line->edge[edge_end];
+ break;
+ case 2:
+ margin = (line->yMax - line->yMin) / 8;
+ x1 = line->edge[edge_end];
+ x2 = line->edge[edge_begin];
+ y1 = line->yMin - margin;
+ y2 = line->yMax + margin;
+ break;
+ case 3:
+ margin = (line->xMax - line->xMin) / 8;
+ x1 = line->xMin - margin;
+ x2 = line->xMax + margin;
+ y1 = line->edge[edge_end];
+ y2 = line->edge[edge_begin];
+ break;
+ }
rect = new PDFRectangle(floor(x1 * scale), floor(y1 * scale), ceil(x2 * scale), ceil(y2 * scale));
list->push_back(rect);
@@ -4499,19 +4531,56 @@ void TextSelectionPainter::visitLine (TextLine *line,
{
double x1, y1, x2, y2, margin;
- margin = (line->yMax - line->yMin) / 8;
- x1 = floor(line->edge[edge_begin]);
- y1 = floor(line->yMin - margin);
- x2 = ceil(line->edge[edge_end]);
- y2 = ceil(line->yMax + margin);
+ switch (line->rot) {
+ default:
+ case 0:
+ margin = (line->yMax - line->yMin) / 8;
+ x1 = line->edge[edge_begin];
+ x2 = line->edge[edge_end];
+ y1 = line->yMin - margin;
+ y2 = line->yMax + margin;
+ break;
+ case 1:
+ margin = (line->xMax - line->xMin) / 8;
+ x1 = line->xMin - margin;
+ x2 = line->xMax + margin;
+ y1 = line->edge[edge_begin];
+ y2 = line->edge[edge_end];
+ break;
+ case 2:
+ margin = (line->yMax - line->yMin) / 8;
+ x1 = line->edge[edge_end];
+ x2 = line->edge[edge_begin];
+ y1 = line->yMin - margin;
+ y2 = line->yMax + margin;
+ break;
+ case 3:
+ margin = (line->xMax - line->xMin) / 8;
+ x1 = line->xMin - margin;
+ x2 = line->xMax + margin;
+ y1 = line->edge[edge_end];
+ y2 = line->edge[edge_begin];
+ break;
+ }
+
+ ctm.transform(x1, y1, &x1, &y1);
+ ctm.transform(x2, y2, &x2, &y2);
- ctm.transform(line->edge[edge_begin], line->yMin - margin, &x1, &y1);
- ctm.transform(line->edge[edge_end], line->yMax + margin, &x2, &y2);
+ if (x1 < x2) {
+ x1 = floor(x1);
+ x2 = ceil(x2);
+ } else {
+ x1 = ceil(x1);
+ x2 = floor(x2);
+ }
- x1 = floor(x1);
- y1 = floor(y1);
- x2 = ceil(x2);
- y2 = ceil(y2);
+ if (y1 < y2) {
+ y1 = floor(y1);
+ y2 = ceil(y2);
+ } else {
+ y1 = ceil(y1);
+ y2 = floor(y2);
+ }
ictm.transform(x1, y1, &x1, &y1);
ictm.transform(x2, y2, &x2, &y2);
@@ -4589,17 +4658,26 @@ void TextWord::visitSelection(TextSelectionVisitor *visitor,
void TextWord::visitSelection(TextSelectionVisitor *visitor, const PDFRectangle *selection, SelectionStyle style)
{
int i, begin, end;
- double mid;
+ double mid, s1, s2;
+
+ if (rot == 0 || rot == 2) {
+ s1 = selection->x1;
+ s2 = selection->x2;
+ } else {
+ s1 = selection->y1;
+ s2 = selection->y2;
+ }
begin = len;
end = 0;
for (i = 0; i < len; i++) {
mid = (edge[i] + edge[i + 1]) / 2;
- if (selection->x1 < mid || selection->x2 < mid)
- if (i < begin)
- begin = i;
- if (mid < selection->x1 || mid < selection->x2)
- end = i + 1;
+ if (XBetweenAB (mid, s1, s2)) {
+ if (i < begin)
+ begin = i;
+
+ end = i + 1;
+ }
}
/* Skip empty selection. */
@@ -4615,26 +4694,41 @@ void TextLine::visitSelection(TextSelectionVisitor *visitor,
TextWord *p, *begin, *end, *current;
int i, edge_begin, edge_end;
PDFRectangle child_selection;
+ double s1, s2, p_min, p_max;
+
+ if (rot == 0 || rot == 2) {
+ s1 = selection->x1;
+ s2 = selection->x2;
+ } else {
+ s1 = selection->y1;
+ s2 = selection->y2;
+ }
begin = nullptr;
end = nullptr;
current = nullptr;
for (p = words; p != nullptr; p = p->next) {
+ if (rot == 0 || rot == 2) {
+ p_min = p->xMin;
+ p_max = p->xMax;
+ } else {
+ p_min = p->yMin;
+ p_max = p->yMax;
+ }
+
if (blk->page->primaryLR) {
- if ((selection->x1 < p->xMax) || (selection->x2 < p->xMax))
- if (begin == nullptr)
- begin = p;
+ if (((s1 < p_max) || (s2 < p_max)) && begin == nullptr)
+ begin = p;
- if (((selection->x1 > p->xMin) || (selection->x2 > p->xMin)) && (begin != nullptr)) {
+ if (((s1 > p_min) || (s2 > p_min)) && begin != nullptr) {
end = p->next;
current = p;
}
} else {
- if ((selection->x1 > p->xMin) || (selection->x2 > p->xMin))
- if (begin == nullptr)
- begin = p;
+ if (((s1 > p_min) || (s2 > p_min)) && begin == nullptr)
+ begin = p;
- if (((selection->x1 < p->xMax) || (selection->x2 < p->xMax)) && (begin != nullptr)) {
+ if (((s1 < p_max) || (s2 < p_max)) && begin != nullptr) {
end = p->next;
current = p;
}
@@ -4650,23 +4740,41 @@ void TextLine::visitSelection(TextSelectionVisitor *visitor,
child_selection = *selection;
if (style == selectionStyleWord) {
- child_selection.x1 = begin ? begin->xMin : xMin;
- if (end && end->xMax != -1) {
- child_selection.x2 = current->xMax;
+ if (rot == 0 || rot == 2) {
+ child_selection.x1 = begin ? begin->xMin : xMin;
+ if (end && end->xMax != -1) {
+ child_selection.x2 = current->xMax;
+ } else {
+ child_selection.x2 = xMax;
+ }
} else {
- child_selection.x2 = xMax;
+ child_selection.y1 = begin ? begin->yMin : yMin;
+ if (end && end->yMax != -1) {
+ child_selection.y2 = current->yMax;
+ } else {
+ child_selection.y2 = yMax;
+ }
}
}
+ if (rot == 0 || rot == 2) {
+ s1 = child_selection.x1;
+ s2 = child_selection.x2;
+ } else {
+ s1 = child_selection.y1;
+ s2 = child_selection.y2;
+ }
+
edge_begin = len;
edge_end = 0;
for (i = 0; i < len; i++) {
double mid = (edge[i] + edge[i + 1]) / 2;
- if (child_selection.x1 < mid || child_selection.x2 < mid)
- if (i < edge_begin)
- edge_begin = i;
- if (mid < child_selection.x2 || mid < child_selection.x1)
- edge_end = i + 1;
+ if (XBetweenAB (mid, s1, s2)) {
+ if (i < edge_begin)
+ edge_begin = i;
+
+ edge_end = i + 1;
+ }
}
/* Skip empty selection. */
--
1.8.4.2

View File

@ -1,205 +0,0 @@
--- poppler/glib/poppler-document.cc
+++ poppler/glib/poppler-document.cc
@@ -3405,6 +3405,7 @@ PopplerFormField *poppler_document_get_f
unsigned fieldNum;
FormPageWidgets *widgets;
FormWidget *field;
+ PopplerFormField *formField;
FormWidget::decodeID(id, &pageNum, &fieldNum);
@@ -3417,8 +3418,14 @@ PopplerFormField *poppler_document_get_f
return nullptr;
field = widgets->getWidget(fieldNum);
- if (field)
- return _poppler_form_field_new(document, field);
+ if (field) {
+ formField = _poppler_form_field_new(document, field);
+ delete widgets;
+
+ return formField;
+ }
+
+ delete widgets;
return nullptr;
}
--- poppler/poppler/CairoOutputDev.cc
+++ poppler/poppler/CairoOutputDev.cc
@@ -2921,8 +2921,10 @@ void CairoOutputDev::setMimeData(GfxStat
// colorspace in stream dict may be different from colorspace in jpx
// data
- if (strKind == strJPX && colorSpace)
+ if (strKind == strJPX && colorSpace) {
+ delete colorSpace;
return;
+ }
// only embed mime data for gray, rgb, and cmyk colorspaces.
if (colorSpace) {
--- poppler/poppler/TextOutputDev.cc
+++ poppler/poppler/TextOutputDev.cc
@@ -1619,7 +1619,6 @@ TextBlock::~TextBlock()
void TextBlock::addWord(TextWord *word)
{
- pool->addWord(word);
if (xMin > xMax) {
xMin = word->xMin;
xMax = word->xMax;
@@ -1639,6 +1638,7 @@ void TextBlock::addWord(TextWord *word)
yMax = word->yMax;
}
}
+ pool->addWord(word);
}
void TextBlock::coalesce(const UnicodeMap *uMap, double fixedPitch)
@@ -3064,11 +3064,13 @@ void TextPage::coalesce(bool physLayout,
word0 = pool->getPool(startBaseIdx);
pool->setPool(startBaseIdx, word0->next);
word0->next = nullptr;
- blk = new TextBlock(this, rot);
- blk->addWord(word0);
fontSize = word0->fontSize;
minBase = maxBase = word0->base;
+
+ blk = new TextBlock(this, rot);
+ blk->addWord(word0);
+
colSpace1 = minColSpacing1 * fontSize;
colSpace2 = minColSpacing2 * fontSize;
lineSpace = maxLineSpacingDelta * fontSize;
@@ -3095,9 +3097,9 @@ void TextPage::coalesce(bool physLayout,
}
word1 = word1->next;
word2->next = nullptr;
+ newMinBase = word2->base;
blk->addWord(word2);
found = true;
- newMinBase = word2->base;
} else {
word0 = word1;
word1 = word1->next;
@@ -3123,9 +3125,9 @@ void TextPage::coalesce(bool physLayout,
}
word1 = word1->next;
word2->next = nullptr;
+ newMaxBase = word2->base;
blk->addWord(word2);
found = true;
- newMaxBase = word2->base;
} else {
word0 = word1;
word1 = word1->next;
@@ -3198,12 +3200,12 @@ void TextPage::coalesce(bool physLayout,
}
word1 = word1->next;
word2->next = nullptr;
- blk->addWord(word2);
if (word2->base < minBase) {
minBase = word2->base;
} else if (word2->base > maxBase) {
maxBase = word2->base;
}
+ blk->addWord(word2);
found = true;
break;
} else {
@@ -3246,12 +3248,12 @@ void TextPage::coalesce(bool physLayout,
}
word1 = word1->next;
word2->next = nullptr;
- blk->addWord(word2);
if (word2->base < minBase) {
minBase = word2->base;
} else if (word2->base > maxBase) {
maxBase = word2->base;
}
+ blk->addWord(word2);
found = true;
break;
} else {
--- poppler/poppler/XRef.cc
+++ poppler/poppler/XRef.cc
@@ -402,6 +402,7 @@ int XRef::reserve(int newSize)
void *p = greallocn_checkoverflow(entries, realNewSize, sizeof(XRefEntry));
if (p == nullptr) {
+ entries = nullptr;
return 0;
}
@@ -835,7 +836,6 @@ bool XRef::constructXRef(bool *wasRecons
int offset = 0;
resize(0); // free entries properly
- gfree(entries);
capacity = 0;
size = 0;
entries = nullptr;
--- poppler/test/pdf-inspector.cc
+++ poppler/test/pdf-inspector.cc
@@ -43,6 +43,7 @@ class PdfInspector
{
public:
PdfInspector();
+ ~PdfInspector();
void set_file_name(const char *file_name);
void load(const char *file_name);
@@ -108,6 +109,11 @@ PdfInspector::PdfInspector()
load(nullptr);
}
+PdfInspector::~PdfInspector(void)
+{
+ delete output;
+}
+
void PdfInspector::set_file_name(const char *file_name)
{
GtkWidget *widget;
--- poppler/utils/HtmlOutputDev.cc
+++ poppler/utils/HtmlOutputDev.cc
@@ -1337,6 +1337,7 @@ void HtmlOutputDev::drawPngImage(GfxStat
// TODO can we calculate the resolution of the image?
if (!writer->init(f1, width, height, 72, 72)) {
error(errInternal, -1, "Can't init PNG for image '{0:t}'", fName);
+ delete fName;
delete writer;
fclose(f1);
return;
--- poppler/utils/pdftotext.cc
+++ poppler/utils/pdftotext.cc
@@ -329,6 +329,7 @@ int main(int argc, char *argv[])
fputs("<pre>\n", f);
if (f != stdout) {
fclose(f);
+ f = nullptr;
}
}
}
@@ -348,8 +349,9 @@ int main(int argc, char *argv[])
printWordBBox(f, doc, textOut, firstPage, lastPage);
}
}
- if (f != stdout) {
+ if (f != stdout && f != nullptr) {
fclose(f);
+ f = nullptr;
}
} else {
textOut = new TextOutputDev(textFileName->c_str(), physLayout, fixedPitch, rawOrder, htmlMeta, discardDiag);
@@ -390,7 +392,7 @@ int main(int argc, char *argv[])
fputs("</pre>\n", f);
fputs("</body>\n", f);
fputs("</html>\n", f);
- if (f != stdout) {
+ if (f != stdout && f != nullptr) {
fclose(f);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +0,0 @@
From dcd5bd8238ea448addd102ff045badd0aca1b990 Mon Sep 17 00:00:00 2001
From: crt <chluo@cse.cuhk.edu.hk>
Date: Wed, 27 Jul 2022 08:40:02 +0000
Subject: pdfseparate: Check XRef's Catalog for being a Dict
diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc
index 351140af..c26a41c4 100644
--- a/poppler/PDFDoc.cc
+++ b/poppler/PDFDoc.cc
@@ -886,6 +886,10 @@ int PDFDoc::savePageAs(const GooString &name, int pageNo)
// get and mark output intents etc.
Object catObj = getXRef()->getCatalog();
+ if (!catObj.isDict()) {
+ error(errSyntaxError, -1, "XRef's Catelog is not a dictionary");
+ return errOpenFile;
+ }
Dict *catDict = catObj.getDict();
Object pagesObj = catDict->lookup("Pages");
Object afObj = catDict->lookupNF("AcroForm").copy();

View File

@ -1,35 +0,0 @@
From 4f478daa6a9734b8f269a6586bdce2909844bb6f Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
Date: Wed, 23 Dec 2020 23:52:58 +0100
Subject: Fix opening files by some generators that are a bit broken
But Adobe opens it and it's easy to fix
diff --git a/poppler/XRef.cc b/poppler/XRef.cc
index 66d3f04a..c36c747a 100644
--- a/poppler/XRef.cc
+++ b/poppler/XRef.cc
@@ -45,6 +45,7 @@
#include <cctype>
#include <climits>
#include <cfloat>
+#include <limits>
#include "goo/gfile.h"
#include "goo/gmem.h"
#include "Object.h"
@@ -793,8 +794,13 @@ bool XRef::readXRefStreamSection(Stream *xrefStr, const int *w, int first, int n
gen = (gen << 8) + c;
}
if (gen > INT_MAX) {
- error(errSyntaxError, -1, "Gen inside xref table too large (bigger than INT_MAX)");
- return false;
+ if (i == 0 && gen == std::numeric_limits<uint32_t>::max()) {
+ // workaround broken generators
+ gen = 65535;
+ } else {
+ error(errSyntaxError, -1, "Gen inside xref table too large (bigger than INT_MAX)");
+ return false;
+ }
}
if (entries[i].offset == -1) {
switch (type) {

View File

@ -1,30 +0,0 @@
--- poppler-20.11.0/glib/poppler-attachment.cc
+++ poppler-20.11.0/glib/poppler-attachment.cc
@@ -114,17 +114,21 @@ PopplerAttachment *_poppler_attachment_n
if (embFile->createDate()) {
priv->ctime = _poppler_convert_pdf_date_to_date_time(embFile->createDate());
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- /* This will overflow on dates from after 2038. This field is
- * deprecated, only kept for backward compatibility. */
- attachment->ctime = (GTime)g_date_time_to_unix(priv->ctime);
+ if (priv->ctime != NULL) {
+ /* This will overflow on dates from after 2038. This field is
+ * deprecated, only kept for backward compatibility. */
+ attachment->ctime = (GTime)g_date_time_to_unix(priv->ctime);
+ }
G_GNUC_END_IGNORE_DEPRECATIONS
}
if (embFile->modDate()) {
priv->mtime = _poppler_convert_pdf_date_to_date_time(embFile->modDate());
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- /* This will overflow on dates from after 2038. This field is
- * deprecated, only kept for backward compatibility. */
- attachment->mtime = (GTime)g_date_time_to_unix(priv->mtime);
+ if (priv->mtime != NULL) {
+ /* This will overflow on dates from after 2038. This field is
+ * deprecated, only kept for backward compatibility. */
+ attachment->mtime = (GTime)g_date_time_to_unix(priv->mtime);
+ }
G_GNUC_END_IGNORE_DEPRECATIONS
}

View File

@ -1,34 +0,0 @@
--- a/poppler/PDFDoc.cc
+++ b/poppler/PDFDoc.cc
@@ -1757,6 +1757,9 @@ void PDFDoc::replacePageDict(int pageNo,
{
Ref *refPage = getCatalog()->getPageRef(pageNo);
Object page = getXRef()->fetch(*refPage);
+ if (!page.isDict()) {
+ return;
+ }
Dict *pageDict = page.getDict();
pageDict->remove("MediaBoxssdf");
pageDict->remove("MediaBox");
--- a/utils/pdfunite.cc
+++ b/utils/pdfunite.cc
@@ -293,9 +293,18 @@ int main(int argc, char *argv[])
const PDFRectangle *cropBox = nullptr;
if (docs[i]->getCatalog()->getPage(j)->isCropped())
cropBox = docs[i]->getCatalog()->getPage(j)->getCropBox();
- docs[i]->replacePageDict(j, docs[i]->getCatalog()->getPage(j)->getRotate(), docs[i]->getCatalog()->getPage(j)->getMediaBox(), cropBox);
Ref *refPage = docs[i]->getCatalog()->getPageRef(j);
Object page = docs[i]->getXRef()->fetch(*refPage);
+ if (!page.isDict()) {
+ fclose(f);
+ delete yRef;
+ delete countRef;
+ delete outStr;
+ error(errSyntaxError, -1, "PDFDoc::replacePageDict failed.");
+ return -1;
+ } else {
+ docs[i]->replacePageDict(j, docs[i]->getCatalog()->getPage(j)->getRotate(), docs[i]->getCatalog()->getPage(j)->getMediaBox(), cropBox);
+ }
Dict *pageDict = page.getDict();
Object *resDict = docs[i]->getCatalog()->getPage(j)->getResourceDictObject();
if (resDict->isDict()) {

View File

@ -1,45 +0,0 @@
From 3cc28b66132e66ed2dfe13a9a285ac41ac7267d5 Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
Date: Wed, 23 Dec 2020 23:27:02 +0100
Subject: [PATCH] FoFiType1C: Fix crashes with broken files
---
fofi/FoFiType1C.cc | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/fofi/FoFiType1C.cc b/fofi/FoFiType1C.cc
index 0387b0a87..4c2e9a770 100644
--- a/fofi/FoFiType1C.cc
+++ b/fofi/FoFiType1C.cc
@@ -194,7 +194,6 @@ void FoFiType1C::convertToType1(const char *psName, const char **newEncoding, bo
Type1CIndexVal val;
GooString *buf;
char buf2[256];
- const char **enc;
bool ok;
int i;
@@ -299,9 +298,9 @@ void FoFiType1C::convertToType1(const char *psName, const char **newEncoding, bo
} else {
(*outputFunc)(outputStream, "256 array\n", 10);
(*outputFunc)(outputStream, "0 1 255 {1 index exch /.notdef put} for\n", 40);
- enc = newEncoding ? newEncoding : (const char **)encoding;
+ const char **enc = newEncoding ? newEncoding : (const char **)encoding;
for (i = 0; i < 256; ++i) {
- if (enc[i]) {
+ if (enc && enc[i]) {
buf = GooString::format("dup {0:d} /{1:s} put\n", i, enc[i]);
(*outputFunc)(outputStream, buf->c_str(), buf->getLength());
delete buf;
@@ -1945,7 +1944,7 @@ bool FoFiType1C::parse()
readPrivateDict(0, 0, &privateDicts[0]);
} else {
getIndex(topDict.fdArrayOffset, &fdIdx, &parsedOk);
- if (!parsedOk) {
+ if (!parsedOk || fdIdx.len <= 0) {
return false;
}
nFDs = fdIdx.len;
--
GitLab

View File

@ -1,58 +0,0 @@
From 81044c64b9ed9a10ae82a28bac753060bdfdac74 Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
Date: Tue, 15 Mar 2022 15:14:32 +0100
Subject: Hints::readTables: bail out if we run out of file when reading
Fixes #1230
diff --git a/poppler/Hints.cc b/poppler/Hints.cc
index 79f04088..4707e1c6 100644
--- a/poppler/Hints.cc
+++ b/poppler/Hints.cc
@@ -5,7 +5,7 @@
// This file is licensed under the GPLv2 or later
//
// Copyright 2010, 2012 Hib Eris <hib@hiberis.nl>
-// Copyright 2010, 2011, 2013, 2014, 2016-2019 Albert Astals Cid <aacid@kde.org>
+// Copyright 2010, 2011, 2013, 2014, 2016-2019, 2021, 2022 Albert Astals Cid <aacid@kde.org>
// Copyright 2010, 2013 Pino Toscano <pino@kde.org>
// Copyright 2013 Adrian Johnson <ajohnson@redneon.com>
// Copyright 2014 Fabio D'Urso <fabiodurso@hotmail.it>
@@ -189,21 +189,31 @@ void Hints::readTables(BaseStream *str, Linearization *linearization, XRef *xref
char *p = &buf[0];
if (hintsOffset && hintsLength) {
- Stream *s = str->makeSubStream(hintsOffset, false, hintsLength, Object(objNull));
+ std::unique_ptr<Stream> s(str->makeSubStream(hintsOffset, false, hintsLength, Object(objNull)));
s->reset();
for (unsigned int i = 0; i < hintsLength; i++) {
- *p++ = s->getChar();
+ const int c = s->getChar();
+ if (unlikely(c == EOF)) {
+ error(errSyntaxWarning, -1, "Found EOF while reading hints");
+ ok = false;
+ return;
+ }
+ *p++ = c;
}
- delete s;
}
if (hintsOffset2 && hintsLength2) {
- Stream *s = str->makeSubStream(hintsOffset2, false, hintsLength2, Object(objNull));
+ std::unique_ptr<Stream> s(str->makeSubStream(hintsOffset2, false, hintsLength2, Object(objNull)));
s->reset();
for (unsigned int i = 0; i < hintsLength2; i++) {
- *p++ = s->getChar();
+ const int c = s->getChar();
+ if (unlikely(c == EOF)) {
+ error(errSyntaxWarning, -1, "Found EOF while reading hints2");
+ ok = false;
+ return;
+ }
+ *p++ = c;
}
- delete s;
}
MemStream *memStream = new MemStream(&buf[0], 0, bufLength, Object(objNull));

View File

@ -1,26 +0,0 @@
From 27354e9d9696ee2bc063910a6c9a6b27c5184a52 Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
Date: Thu, 25 Aug 2022 00:14:22 +0200
Subject: JBIG2Stream: Fix crash on broken file
https://github.com/jeffssh/CVE-2021-30860
Thanks to David Warren for the heads up
diff --git a/poppler/JBIG2Stream.cc b/poppler/JBIG2Stream.cc
index 662276e5..9f70431d 100644
--- a/poppler/JBIG2Stream.cc
+++ b/poppler/JBIG2Stream.cc
@@ -1976,7 +1976,11 @@ void JBIG2Stream::readTextRegionSeg(unsigned int segNum, bool imm, bool lossless
for (i = 0; i < nRefSegs; ++i) {
if ((seg = findSegment(refSegs[i]))) {
if (seg->getType() == jbig2SegSymbolDict) {
- numSyms += ((JBIG2SymbolDict *)seg)->getSize();
+ const unsigned int segSize = ((JBIG2SymbolDict *)seg)->getSize();
+ if (unlikely(checkedAdd(numSyms, segSize, &numSyms))) {
+ error(errSyntaxError, getPos(), "Too many symbols in JBIG2 text region");
+ return;
+ }
} else if (seg->getType() == jbig2SegCodeTable) {
codeTables->push_back(seg);
}

View File

@ -1,48 +0,0 @@
From efb68686784f0c58668b7ced990fd173e09346db Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
Date: Thu, 18 Aug 2022 23:41:24 +0200
Subject: pdfunite: Don't crash in broken documents
diff --git a/utils/pdfunite.cc b/utils/pdfunite.cc
index 86e75555..a154f40d 100644
--- a/utils/pdfunite.cc
+++ b/utils/pdfunite.cc
@@ -106,16 +106,21 @@ static void doMergeNameDict(PDFDoc *doc, XRef *srcXRef, XRef *countRef, int oldR
}
}
-static void doMergeFormDict(Dict *srcFormDict, Dict *mergeFormDict, int numOffset)
+static bool doMergeFormDict(Dict *srcFormDict, Dict *mergeFormDict, int numOffset)
{
Object srcFields = srcFormDict->lookup("Fields");
Object mergeFields = mergeFormDict->lookup("Fields");
if (srcFields.isArray() && mergeFields.isArray()) {
for (int i = 0; i < mergeFields.arrayGetLength(); i++) {
const Object &value = mergeFields.arrayGetNF(i);
+ if (!value.isRef()) {
+ error(errSyntaxError, -1, "Fields object is not a Ref.");
+ return false;
+ }
srcFields.arrayAdd(Object({ value.getRef().num + numOffset, value.getRef().gen }));
}
}
+ return true;
}
///////////////////////////////////////////////////////////////////////////
@@ -332,7 +337,13 @@ int main(int argc, char *argv[])
if (afObj.isNull()) {
afObj = pageCatDict->lookupNF("AcroForm").copy();
} else if (afObj.isDict()) {
- doMergeFormDict(afObj.getDict(), pageForm.getDict(), numOffset);
+ if (!doMergeFormDict(afObj.getDict(), pageForm.getDict(), numOffset)) {
+ fclose(f);
+ delete yRef;
+ delete countRef;
+ delete outStr;
+ return -1;
+ }
}
}
objectsCount += docs[i]->writePageObjects(outStr, yRef, numOffset, true);

View File

@ -1,41 +0,0 @@
From 4631115647c1e4f0482ffe0491c2f38d2231337b Mon Sep 17 00:00:00 2001
From: crt <chluo@cse.cuhk.edu.hk>
Date: Fri, 29 Jul 2022 20:51:11 +0000
Subject: Check isDict before calling getDict
Issue #1276
diff --git a/utils/pdfunite.cc b/utils/pdfunite.cc
index b96b0378..050927d3 100644
--- a/utils/pdfunite.cc
+++ b/utils/pdfunite.cc
@@ -197,6 +197,14 @@ int main(int argc, char *argv[])
Object ocObj;
if (docs.size() >= 1) {
Object catObj = docs[0]->getXRef()->getCatalog();
+ if(!catObj.isDict()){
+ fclose(f);
+ delete yRef;
+ delete countRef;
+ delete outStr;
+ error(errSyntaxError, -1, "XRef's Catalog is not a dictionary.");
+ return -1;
+ }
Dict *catDict = catObj.getDict();
intents = catDict->lookup("OutputIntents");
afObj = catDict->lookupNF("AcroForm").copy();
@@ -295,6 +303,14 @@ int main(int argc, char *argv[])
}
}
Object pageCatObj = docs[i]->getXRef()->getCatalog();
+ if(!pageCatObj.isDict()){
+ fclose(f);
+ delete yRef;
+ delete countRef;
+ delete outStr;
+ error(errSyntaxError, -1, "XRef's Catalog is not a dictionary.");
+ return -1;
+ }
Dict *pageCatDict = pageCatObj.getDict();
Object pageNames = pageCatDict->lookup("Names");
if (!pageNames.isNull() && pageNames.isDict()) {

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}

View File

@ -0,0 +1,12 @@
--- poppler-0.90.0/CMakeLists.txt
+++ poppler-0.90.0/CMakeLists.txt
@@ -17,6 +17,9 @@ else()
include(MacroOptionalFindPackage)
find_package(PkgConfig)
+
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
include(TestBigEndian)
test_big_endian(WORDS_BIGENDIAN)
include(CheckFileOffsetBits)

View File

@ -0,0 +1,11 @@
--- poppler-21.01.0/glib/CMakeLists.txt
+++ poppler-21.01.0/glib/CMakeLists.txt
@@ -121,7 +121,7 @@ if (HAVE_INTROSPECTION AND BUILD_SHARED_
# General gir: Reset object-list for introspection & load tool args
set(INTROSPECTION_GIRS)
- set(INTROSPECTION_SCANNER_ARGS "--add-include-path=${CMAKE_CURRENT_SOURCE_DIR}" "--warn-all")
+ set(INTROSPECTION_SCANNER_ARGS "--add-include-path=${CMAKE_CURRENT_SOURCE_DIR}" "--warn-all" "--sources-top-dirs=${CMAKE_SOURCE_DIR}" "--sources-top-dirs=${CMAKE_BINARY_DIR}")
set(INTROSPECTION_COMPILER_ARGS ${INTROSPECTION_COMPILER_ARGS} "--includedir=${CMAKE_CURRENT_SOURCE_DIR}")
# Poppler: Assign package to gir & export keys

View File

@ -3,7 +3,6 @@ From: Albert Astals Cid <aacid@kde.org>
Date: Fri, 7 Jun 2024 00:54:55 +0200 Date: Fri, 7 Jun 2024 00:54:55 +0200
Subject: pdfinfo: Fix crash in broken documents when using -dests Subject: pdfinfo: Fix crash in broken documents when using -dests
Modified by Marek Kasik due to the backport.
diff --git a/utils/pdfinfo.cc b/utils/pdfinfo.cc diff --git a/utils/pdfinfo.cc b/utils/pdfinfo.cc
index 5d37ef64..7d569749 100644 index 5d37ef64..7d569749 100644
@ -13,36 +12,36 @@ index 5d37ef64..7d569749 100644
// under GPL version 2 or later // under GPL version 2 or later
// //
// Copyright (C) 2006 Dom Lachowicz <cinamod@hotmail.com> // Copyright (C) 2006 Dom Lachowicz <cinamod@hotmail.com>
-// Copyright (C) 2007-2010, 2012, 2016-2020 Albert Astals Cid <aacid@kde.org> -// Copyright (C) 2007-2010, 2012, 2016-2022 Albert Astals Cid <aacid@kde.org>
+// Copyright (C) 2007-2010, 2012, 2016-2020, 2024 Albert Astals Cid <aacid@kde.org> +// Copyright (C) 2007-2010, 2012, 2016-2022, 2024 Albert Astals Cid <aacid@kde.org>
// Copyright (C) 2010 Hib Eris <hib@hiberis.nl> // Copyright (C) 2010 Hib Eris <hib@hiberis.nl>
// Copyright (C) 2011 Vittal Aithal <vittal.aithal@cognidox.com> // Copyright (C) 2011 Vittal Aithal <vittal.aithal@cognidox.com>
// Copyright (C) 2012, 2013, 2016-2018 Adrian Johnson <ajohnson@redneon.com> // Copyright (C) 2012, 2013, 2016-2018, 2021 Adrian Johnson <ajohnson@redneon.com>
@@ -107,6 +107,23 @@ static const ArgDesc argDesc[] = { { "-f @@ -113,16 +113,21 @@ static const ArgDesc argDesc[] = { { "-f", argInt, &firstPage, 0, "first page to
{ "-?", argFlag, &printHelp, 0, "print usage information" }, { "-?", argFlag, &printHelp, 0, "print usage information" },
{} }; {} };
-static void printTextString(const GooString *s, const UnicodeMap *uMap)
+static void printStdTextString(const std::string &s, const UnicodeMap *uMap) +static void printStdTextString(const std::string &s, const UnicodeMap *uMap)
{
char buf[8];
- std::vector<Unicode> u = TextStringToUCS4(s->toStr());
+ const std::vector<Unicode> u = TextStringToUCS4(s);
for (const auto &c : u) {
int n = uMap->mapUnicode(c, buf, sizeof(buf));
fwrite(buf, 1, n, stdout);
}
}
+static void printTextString(const GooString *s, const UnicodeMap *uMap)
+{ +{
+ char buf[8]; + printStdTextString(s->toStr(), uMap);
+ Unicode *u;
+ int i, len;
+ GooString *s1 = new GooString(s);
+
+ if (s1 != nullptr) {
+ len = TextStringToUCS4(s1, &u);
+ for (i = 0; i < len; i++) {
+ int n = uMap->mapUnicode(u[i], buf, sizeof(buf));
+ fwrite(buf, 1, n, stdout);
+ }
+ delete s1;
+ }
+} +}
+ +
static void printInfoString(Dict *infoDict, const char *key, const char *text, const UnicodeMap *uMap) static void printUCS4String(const Unicode *u, int len, const UnicodeMap *uMap)
{ {
const GooString *s1; char buf[8];
@@ -278,11 +295,6 @@ static void printStruct(const StructElem @@ -294,11 +299,6 @@ static void printStruct(const StructElement *element, unsigned indent)
} }
} }
@ -54,7 +53,7 @@ index 5d37ef64..7d569749 100644
static void printLinkDest(const std::unique_ptr<LinkDest> &dest) static void printLinkDest(const std::unique_ptr<LinkDest> &dest)
{ {
GooString s; GooString s;
@@ -353,29 +365,25 @@ static void printLinkDest(const std::uni @@ -369,29 +369,25 @@ static void printLinkDest(const std::unique_ptr<LinkDest> &dest)
static void printDestinations(PDFDoc *doc, const UnicodeMap *uMap) static void printDestinations(PDFDoc *doc, const UnicodeMap *uMap)
{ {
@ -90,18 +89,11 @@ index 5d37ef64..7d569749 100644
} }
} }
@@ -389,16 +397,8 @@ static void printDestinations(PDFDoc *do @@ -405,9 +401,8 @@ static void printDestinations(PDFDoc *doc, const UnicodeMap *uMap)
printf("%4d ", i); printf("%4d ", i);
printLinkDest(it.second); printLinkDest(it.second);
printf(" \""); printf(" \"");
- Unicode *u; - printTextString(it.first, uMap);
- char buf[8];
- const int len = TextStringToUCS4(it.first, &u);
- for (int j = 0; j < len; j++) {
- const int n = uMap->mapUnicode(u[j], buf, sizeof(buf));
- fwrite(buf, 1, n, stdout);
- }
- gfree(u);
+ printStdTextString(it.first, uMap); + printStdTextString(it.first, uMap);
printf("\"\n"); printf("\"\n");
- delete it.first; - delete it.first;

View File

@ -1,57 +1,39 @@
%global test_sha 0d2bfd4af4c76a3bac27ccaff793d9129df7b57a %global test_sha 03a4b9eb854a06a83c465e82de601796c458bbe9
%global test_date 2009-05-13 %global test_date 2021-01-11
%bcond qt 1
%if %{with qt}
# Enable qt5 support (or not)
# RHEL 10 drops support for Qt5, adds Qt6
%if %{undefined rhel} || 0%{?rhel} < 10
%global qt5 1
%endif
%if %{undefined rhel} || 0%{?rhel} >= 10
%global qt6 1
%endif
%endif
Summary: PDF rendering library Summary: PDF rendering library
Name: poppler Name: poppler
Version: 20.11.0 Version: 24.02.0
Release: 12%{?dist} Release: 5%{?dist}
License: (GPLv2 or GPLv3) and GPLv2+ and LGPLv2+ and MIT License: (GPL-2.0-only OR GPL-3.0-only) AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-or-later 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 Patch1: poppler-0.90.0-position-independent-code.patch
Patch0: poppler-0.30.0-rotated-words-selection.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1602662 Patch3: poppler-21.01.0-glib-introspection.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1638712
Patch4: poppler-0.66.0-covscan.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1618766 # https://issues.redhat.com/browse/RHEL-44326
Patch21: poppler-0.66.0-nss.patch Patch4: poppler-24.02.0-pdfinfo-dests.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1981108
Patch22: poppler-20.11.0-check-gdatetime.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2002575
Patch23: poppler-20.11.0-bad-generation.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2087190
Patch24: poppler-20.11.0-hints.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2124527
Patch25: poppler-20.11.0-jbig-symbol-overflow.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2189815
Patch26: poppler-20.11.0-pdfunite-broken-document.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2189811
Patch27: poppler-20.11.0-pdfunite-check-isDict.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2189814
Patch28: poppler-20.11.0-check-isDict.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2189810
Patch29: poppler-20.11.0-XRef-check-isDict.patch
# https://issues.redhat.com/browse/RHEL-4255
Patch30: poppler-20.11.0-fix-crash-in-FoFiType1C.patch
# https://issues.redhat.com/browse/RHEL-44330
Patch31: poppler-20.11.0-pdfinfo-dests.patch
BuildRequires: make
BuildRequires: cmake BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: gettext-devel BuildRequires: gettext-devel
BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(cairo-ft) BuildRequires: pkgconfig(cairo-ft)
@ -73,12 +55,23 @@ BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libtiff-4) BuildRequires: pkgconfig(libtiff-4)
BuildRequires: pkgconfig(nss) BuildRequires: pkgconfig(nss)
BuildRequires: pkgconfig(poppler-data) BuildRequires: pkgconfig(poppler-data)
BuildRequires: pkgconfig(libcurl)
BuildRequires: cmake(Gpgmepp)
%if 0%{?qt5}
BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Gui) BuildRequires: pkgconfig(Qt5Gui)
BuildRequires: pkgconfig(Qt5Test) BuildRequires: pkgconfig(Qt5Test)
BuildRequires: pkgconfig(Qt5Widgets) BuildRequires: pkgconfig(Qt5Widgets)
BuildRequires: pkgconfig(Qt5Xml) BuildRequires: pkgconfig(Qt5Xml)
BuildRequires: python3-devel %endif
%if 0%{?qt6}
BuildRequires: cmake(Qt6Core)
BuildRequires: cmake(Qt6Gui)
BuildRequires: cmake(Qt6Test)
BuildRequires: cmake(Qt6Widgets)
BuildRequires: cmake(Qt6Xml)
%endif
BuildRequires: boost-devel
Requires: poppler-data Requires: poppler-data
@ -118,9 +111,11 @@ BuildArch: noarch
%description glib-doc %description glib-doc
%{summary}. %{summary}.
%if 0%{?qt5}
%package qt5 %package qt5
Summary: Qt5 wrapper for poppler Summary: Qt5 wrapper for poppler
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
Obsoletes: %{name}-qt < 0.90.0-9
%description qt5 %description qt5
%{summary}. %{summary}.
@ -129,8 +124,26 @@ Summary: Development files for Qt5 wrapper
Requires: %{name}-qt5%{?_isa} = %{version}-%{release} Requires: %{name}-qt5%{?_isa} = %{version}-%{release}
Requires: %{name}-devel%{?_isa} = %{version}-%{release} Requires: %{name}-devel%{?_isa} = %{version}-%{release}
Requires: qt5-qtbase-devel Requires: qt5-qtbase-devel
Obsoletes: %{name}-qt-devel < 0.90.0-9
%description qt5-devel %description qt5-devel
%{summary}. %{summary}.
%endif
%if 0%{?qt6}
%package qt6
Summary: Qt6 wrapper for poppler
Requires: %{name}%{?_isa} = %{version}-%{release}
%description qt6
%{summary}.
%package qt6-devel
Summary: Development files for Qt6 wrapper
Requires: %{name}-qt6%{?_isa} = %{version}-%{release}
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
Requires: qt6-qtbase-devel
%description qt6-devel
%{summary}.
%endif
%package cpp %package cpp
Summary: Pure C++ wrapper for poppler Summary: Pure C++ wrapper for poppler
@ -156,61 +169,65 @@ other formats.
%prep %prep
%autosetup -p1 -b 1 %autosetup -p1 -b 1
chmod -x poppler/CairoFontEngine.cc chmod -x poppler/CairoFontEngine.cc
%build %build
mkdir build
cd build
export CC="gcc -fPIC" # hack to make the cmake call pass
%cmake \ %cmake \
-DENABLE_CMS=lcms2 \ -DENABLE_CMS=lcms2 \
-DENABLE_DCTDECODER=libjpeg \ -DENABLE_DCTDECODER=libjpeg \
-DENABLE_GTK_DOC=ON \ -DENABLE_GTK_DOC=ON \
-DENABLE_LIBOPENJPEG=openjpeg2 \ -DENABLE_LIBOPENJPEG=openjpeg2 \
-DENABLE_ZLIB=OFF \ %if ! 0%{?qt5}
-DENABLE_NSS=ON \ -DENABLE_QT5=OFF \
-DENABLE_UNSTABLE_API_ABI_HEADERS=ON \ %endif
%if ! 0%{?qt6}
-DENABLE_QT6=OFF \ -DENABLE_QT6=OFF \
%endif
-DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
-DENABLE_ZLIB=OFF \
.. ..
unset CC %cmake_build
make %{?_smp_mflags}
%install %install
cd build %cmake_install
make install DESTDIR=$RPM_BUILD_ROOT
%check %check
make %{?_smp_mflags} test %make_build test
# verify pkg-config sanity/version # verify pkg-config sanity/version
export PKG_CONFIG_PATH=%{buildroot}%{_datadir}/pkgconfig:%{buildroot}%{_libdir}/pkgconfig export PKG_CONFIG_PATH=%{buildroot}%{_datadir}/pkgconfig:%{buildroot}%{_libdir}/pkgconfig
test "$(pkg-config --modversion poppler)" = "%{version}" test "$(pkg-config --modversion poppler)" = "%{version}"
test "$(pkg-config --modversion poppler-cairo)" = "%{version}"
test "$(pkg-config --modversion poppler-cpp)" = "%{version}" test "$(pkg-config --modversion poppler-cpp)" = "%{version}"
test "$(pkg-config --modversion poppler-glib)" = "%{version}" test "$(pkg-config --modversion poppler-glib)" = "%{version}"
%if 0%{?qt5}
test "$(pkg-config --modversion poppler-qt5)" = "%{version}" test "$(pkg-config --modversion poppler-qt5)" = "%{version}"
test "$(pkg-config --modversion poppler-splash)" = "%{version}" %endif
%if 0%{?qt6}
test "$(pkg-config --modversion poppler-qt6)" = "%{version}"
%endif
%post -p /sbin/ldconfig %ldconfig_scriptlets
%postun -p /sbin/ldconfig
%post glib -p /sbin/ldconfig %ldconfig_scriptlets glib
%postun glib -p /sbin/ldconfig
%post qt5 -p /sbin/ldconfig %if 0%{?qt5}
%postun qt5 -p /sbin/ldconfig %ldconfig_scriptlets qt5
%endif
%post cpp -p /sbin/ldconfig %if 0%{?qt6}
%postun cpp -p /sbin/ldconfig %ldconfig_scriptlets qt6
%endif
%ldconfig_scriptlets cpp
%files %files
%doc README.md %doc README.md
%license COPYING %license COPYING
%{_libdir}/libpoppler.so.104* %{_libdir}/libpoppler.so.134*
%files devel %files devel
%{_libdir}/pkgconfig/poppler.pc %{_libdir}/pkgconfig/poppler.pc
%{_libdir}/pkgconfig/poppler-splash.pc
%{_libdir}/libpoppler.so %{_libdir}/libpoppler.so
%dir %{_includedir}/poppler/ %dir %{_includedir}/poppler/
# xpdf headers # xpdf headers
@ -225,7 +242,6 @@ test "$(pkg-config --modversion poppler-splash)" = "%{version}"
%files glib-devel %files glib-devel
%{_libdir}/pkgconfig/poppler-glib.pc %{_libdir}/pkgconfig/poppler-glib.pc
%{_libdir}/pkgconfig/poppler-cairo.pc
%{_libdir}/libpoppler-glib.so %{_libdir}/libpoppler-glib.so
%{_datadir}/gir-1.0/Poppler-0.18.gir %{_datadir}/gir-1.0/Poppler-0.18.gir
%{_includedir}/poppler/glib/ %{_includedir}/poppler/glib/
@ -234,6 +250,7 @@ test "$(pkg-config --modversion poppler-splash)" = "%{version}"
%license COPYING %license COPYING
%{_datadir}/gtk-doc/ %{_datadir}/gtk-doc/
%if 0%{?qt5}
%files qt5 %files qt5
%{_libdir}/libpoppler-qt5.so.1* %{_libdir}/libpoppler-qt5.so.1*
@ -241,6 +258,17 @@ test "$(pkg-config --modversion poppler-splash)" = "%{version}"
%{_libdir}/libpoppler-qt5.so %{_libdir}/libpoppler-qt5.so
%{_libdir}/pkgconfig/poppler-qt5.pc %{_libdir}/pkgconfig/poppler-qt5.pc
%{_includedir}/poppler/qt5/ %{_includedir}/poppler/qt5/
%endif
%if 0%{?qt6}
%files qt6
%{_libdir}/libpoppler-qt6.so.3*
%files qt6-devel
%{_libdir}/libpoppler-qt6.so
%{_libdir}/pkgconfig/poppler-qt6.pc
%{_includedir}/poppler/qt6/
%endif
%files cpp %files cpp
%{_libdir}/libpoppler-cpp.so.0* %{_libdir}/libpoppler-cpp.so.0*
@ -255,182 +283,303 @@ test "$(pkg-config --modversion poppler-splash)" = "%{version}"
%{_mandir}/man1/* %{_mandir}/man1/*
%changelog %changelog
* Fri Jul 26 2024 Marek Kasik <mkasik@redhat.com> - 20.11.0-12 * Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 24.02.0-5
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Fri Jul 26 2024 Marek Kasik <mkasik@redhat.com> - 24.02.0-4
- Fix crash in broken documents when using -dests - Fix crash in broken documents when using -dests
- Fix versions in changelog - Resolves: RHEL-44326
- Resolves: RHEL-44330
* Thu Oct 12 2023 Marek Kasik <mkasik@redhat.com> - 20.11.0-11 * Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 24.02.0-3
- Fix crashes in FoFiType1C - Bump release for June 2024 mass rebuild
- Rebuild for inclusion of poppler-glib-doc in CRB
- Resolves: RHEL-4255, RHEL-4273
* Fri Jun 9 2023 Marek Kasik <mkasik@redhat.com> - 20.11.0-10 * Tue Feb 6 2024 Marek Kasik <mkasik@redhat.com> - 24.02.0-2
- Check XRef's Catalog for being a Dict - Migrated to SPDX license
- Resolves: #2189816
* Fri Jun 9 2023 Marek Kasik <mkasik@redhat.com> - 20.11.0-9 * Fri Feb 2 2024 Marek Kasik <mkasik@redhat.com> - 24.02.0-1
- Check isDict before calling getDict 2 - Update to 24.02.0
- Resolves: #2189837 - Resolves: #2237549
* Fri Jun 9 2023 Marek Kasik <mkasik@redhat.com> - 20.11.0-8 * Fri Feb 2 2024 Marie Loise Nolden <loise@kde.org> - 24.01.0-1
- Check isDict before calling getDict - update to 24.01.9
- Resolves: #2189823
* Fri Jun 9 2023 Marek Kasik <mkasik@redhat.com> - 20.11.0-7 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 23.08.0-3
- Don't crash in broken documents - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
- Resolves: #2189844
* Tue Sep 20 2022 Marek Kasik <mkasik@redhat.com> - 20.11.0-6 * Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 23.08.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Aug 2 2023 Marek Kasik <mkasik@redhat.com> - 23.08.0-1
- Update to 23.08.0
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 23.02.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Mon Jun 19 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 23.02.0-2
- Disable qt5 in RHEL 10 builds
- Enable qt6 on s390x
* Fri Feb 3 2023 Marek Kasik <mkasik@redhat.com> - 23.02.0-1
- Update to 23.02.0
- Resolves: #2123190
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 22.08.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Nov 29 2022 Marek Kasik <mkasik@redhat.com> - 22.08.0-4
- Update font after restore in Cairo
- Provide Unicode marker when ensuring fonts
* Wed Oct 05 2022 Marek Kasik <mkasik@redhat.com> - 22.08.0-3
- Check for overflow when computing number of symbols - Check for overflow when computing number of symbols
- in JBIG2 text region - in JBIG2 text region
- Resolves: #2126361 - Resolves: #2124530
* Fri Jun 17 2022 Marek Kasik <mkasik@redhat.com> - 20.11.0-5 * Tue Sep 6 2022 Amit Shah <amitshah@fedoraproject.org> - 22.08.0-2
- Allow building without Qt
* Tue Aug 2 2022 Marek Kasik <mkasik@redhat.com> - 22.08.0-1
- Update to 22.08.0
- Resolves: #2049336
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 22.01.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jun 15 2022 Marek Kasik <mkasik@redhat.com> - 22.01.0-5
- Don't run out of file for Hints - Don't run out of file for Hints
- Rebuild for #2096452 - Resolves: #2090965
- Resolves: #2090969, #2096452
* Thu Sep 9 2021 Marek Kasik <mkasik@redhat.com> - 20.11.0-4 * Fri May 20 2022 Sandro Mani <manisandro@gmail.com> - 22.01.0-4
- Fix opening files with streams with wrong generations - Rebuild for gdal-3.5.0 and/or openjpeg-2.5.0
- Resolves: #2002575
* Wed Aug 4 2021 Marek Kasik <mkasik@redhat.com> - 20.11.0-3 * Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 22.01.0-3
- Fix crash when processing dates of embedded files - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
- Resolves: #1981108
* Tue Dec 8 2020 Marek Kasik <mkasik@redhat.com> - 20.11.0-2 * Fri Jan 14 2022 Sandro Mani <manisandro@gmail.com> - 22.01.0-2
- Improve python3 build dependency - Enable qt6
- Resolves: #1896335
* Fri Nov 6 2020 Marek Kasik <mkasik@redhat.com> - 20.11.0-1 * Thu Jan 13 2022 Marek Kasik <mkasik@redhat.com> - 22.01.0-1
- Rebase poppler to 20.11.0 - Update to 22.01.0
- Modify/remove patches as needed - Resolves: #2000346
- Resolves: #1644423
* Thu Apr 16 2020 Marek Kasik <mkasik@redhat.com> - 0.66.0-27 * Mon Aug 2 2021 Marek Kasik <mkasik@redhat.com> - 21.08.0-1
- Fix crash on broken file in tilingPatternFill() - Update to 21.08.0
- Resolves: #1801341 - Resolves: #1923798, #1988844
* Tue Aug 13 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-26 * Mon Jul 26 2021 Marek Kasik <mkasik@redhat.com> - 21.07.0-2
- Coverity scan related fixes - Disable qt6 frontend as it doesn't build on s390x
- Related: #1618766 - Resolves: #1923798
* Tue Aug 13 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-25 * Mon Jul 26 2021 Marek Kasik <mkasik@redhat.com> - 21.07.0-1
- Check whether input is RGB in PSOutputDev::checkPageSlice() - Update to 21.07.0
- also when using "-optimizecolorspace" flag - Add requirement of boost for performance gain in splash
- Resolves: #1697576 - Add qt6 subpackages
- Resolves: #1923798
* Fri Aug 9 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-24 * Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 21.01.0-8
- Check whether input is RGB in PSOutputDev::checkPageSlice() - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
- Resolves: #1697576
* Fri Aug 9 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-23 * Tue Jun 1 2021 Marek Kasik <mkasik@redhat.com> - 21.01.0-7
- Fix showing of non-ASCII characters in annotations
- Resolves: #1958673
* Tue Mar 30 2021 Jonathan Wakely <jwakely@redhat.com> - 21.01.0-6
- Rebuilt for removed libstdc++ symbol (#1937698)
* Tue Feb 9 2021 Marek Kasik <mkasik@redhat.com> - 21.01.0-5
- Obsolete Qt4 frontend
- Resolves: #1926010
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 21.01.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Jan 15 2021 Marek Kasik <mkasik@redhat.com> - 21.01.0-3
- Improve the previous fix
- Resolves: #1915776
* Wed Jan 13 2021 Marek Kasik <mkasik@redhat.com> - 21.01.0-2
- Fix multilib property of poppler-glib
- by using the same build directory for all architectures
- Resolves: #1915776
* Mon Jan 11 2021 Marek Kasik <mkasik@redhat.com> - 21.01.0-1
- Update to 21.01.0
- Remove the Qt4 frontend
- Resolves: #1673727
* Mon Dec 07 2020 Marek Kasik <mkasik@redhat.com> - 0.90.0-8
- Build Qt4 frontend on Fedora only
* Sat Oct 31 2020 Jeff Law <law@redhat.com> - 0.90.0-7
- Fix bogus volatiles caught by gcc-11
* Tue Aug 04 2020 Marek Kasik <mkasik@redhat.com> - 0.90.0-6
- Align poppler with
- https://fedoraproject.org/wiki/Changes/CMake_to_do_out-of-source_builds
- Resolves: #1865248
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.90.0-5
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.90.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jul 10 2020 Marek Kasik <mkasik@redhat.com> - 0.90.0-3
- Fix some other issues.
- Resolves: #1673727
* Fri Jul 10 2020 Marek Kasik <mkasik@redhat.com> - 0.90.0-2
- Compile poppler with position independent code turned on.
- Otherwise it doesn't build on Fedora 33.
- Resolves: #1673727
* Wed Jul 08 2020 Marek Kasik <mkasik@redhat.com> - 0.90.0-1
- Update to 0.90.0
- Resolves: #1673727
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.84.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Jan 17 2020 Marek Kasik <mkasik@redhat.com> - 0.84.0-1
- Update to 0.84.0
- Resolves: #1673727
* Fri Dec 20 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-15
- Check scaled dimensions for 0
- Resolves: #1785416
* Wed Jul 24 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-14
- Ignore dict Length if it is broken - Ignore dict Length if it is broken
- Resolves: #1733027 - Resolves: #1732342
* Fri Aug 9 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-22 * Thu May 30 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-13
- Don't read outside of image buffer in PSOutputDev
- Resolves: #1696640
* Thu May 30 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-12
- SplashXPathScanner::clipAALine: Fix crash on broken file
- Resolves: #1696640
* Thu May 30 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-11
- Restrict filling of overlapping boxes in Splash
- Resolves: #1696640
* Wed May 29 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-10
- Fail gracefully if not all components of JPEG2000Stream - Fail gracefully if not all components of JPEG2000Stream
- have the same size - have the same size
- Resolves: #1723505 - Resolves: #1713585
* Fri Jun 28 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-21 * Wed Apr 17 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-9
- Implement crypto functions using NSS - Fix infinite loop in broken files
- Resolves: #1618766 - Resolves: #1699863
* Wed Apr 3 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-20 * Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-8
- Fix stack overflow on broken file
- Resolves: #1691887
* Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-19
- Constrain number of cycles in rescale filter - Constrain number of cycles in rescale filter
- Compute correct coverage values for box filter - Compute correct coverage values for box filter
- Resolves: #1688418 - Resolves: #1686803
* Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-18 * Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-7
- Fix stack overflow on broken file
- Resolves: #1691725
* Mon Mar 11 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-6
- Fix possible crash on broken files in ImageStream::getLine() - Fix possible crash on broken files in ImageStream::getLine()
- Resolves: #1685268 - Resolves: #1683633
* Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-17 * Fri Mar 8 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-5
- Synchronize previous patch with upstream
- Related: #1665274
* Wed Feb 20 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-4
- Check Catalog from XRef for being a Dict - Check Catalog from XRef for being a Dict
- Resolves: #1677347 - Resolves: #1665274
* Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-16 * Wed Feb 20 2019 Marek Kasik <mkasik@redhat.com> - 0.73.0-3
- Move the fileSpec.dictLookup call inside fileSpec.isDict if
- Resolves: #1677028
* Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-15
- Do not try to construct invalid rich media annotation assets
- Resolves: #1677025
* Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-14
- Defend against requests for negative XRef indices - Defend against requests for negative XRef indices
- Resolves: #1673699 - Resolves: #1672420
* Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-13 * Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.73.0-2
- Do not try to parse into unallocated XRef entry - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
- Resolves: #1677057
* Mon Apr 1 2019 Marek Kasik <mkasik@redhat.com> - 0.66.0-12 * 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
- Avoid global display profile state becoming an uncontrolled - Avoid global display profile state becoming an uncontrolled
- memory leak - memory leak
- Resolves: #1646552 - Resolves: #1646549
* Fri Dec 14 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-11 * Mon Jan 21 2019 Marek Kasik <mkasik@redhat.com> - 0.67.0-9
- Fix tiling patterns when pattern cell is too far - Do not try to parse into unallocated XRef entry
- Resolves: #1644094 - Resolves: #1665268
* Fri Nov 16 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-10 * Mon Jan 21 2019 Marek Kasik <mkasik@redhat.com> - 0.67.0-8
- Move the fileSpec.dictLookup call inside fileSpec.isDict if
- Resolves: #1665264
* Mon Jan 21 2019 Marek Kasik <mkasik@redhat.com> - 0.67.0-7
- Do not try to construct invalid rich media annotation assets
- Resolves: #1665260
* Thu Nov 15 2018 Marek Kasik <mkasik@redhat.com> - 0.67.0-6
- Check for valid file name of embedded file - Check for valid file name of embedded file
- Resolves: #1649453 - Resolves: #1649451
* Fri Nov 16 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-9 * Thu Nov 15 2018 Marek Kasik <mkasik@redhat.com> - 0.67.0-5
- Check for valid embedded file before trying to save it - Check for valid embedded file before trying to save it
- Resolves: #1649443 - Resolves: #1649441
* Fri Nov 16 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-8 * Thu Nov 15 2018 Marek Kasik <mkasik@redhat.com> - 0.67.0-4
- Check for stream before calling stream methods - Check for stream before calling stream methods
- when saving an embedded file - when saving an embedded file
- Resolves: #1649438 - Resolves: #1649436
* Thu Nov 15 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-7 * Mon Nov 12 2018 Marek Kasik <mkasik@redhat.com> - 0.67.0-3
- Fix crash on missing embedded file
- Resolves: #1649460
* Thu Nov 15 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-6
- Avoid cycles in PDF parsing - Avoid cycles in PDF parsing
- Resolves: #1626623 - Resolves: #1626620
* Fri Oct 12 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-5 * Wed Oct 17 2018 Marek Kasik <mkasik@redhat.com> - 0.67.0-2
- Fix crash when accessing list of selections - Fix crash on missing embedded file
- Resolves: #1638712 - Resolves: #1569334
* Mon Sep 24 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-4 * Tue Aug 14 2018 Marek Kasik <mkasik@redhat.com> - 0.67.0-1
- Fix important issues found by covscan - Update to 0.67.0
- Resolves: #1602662 - Resolves: #1568641
* Tue Aug 14 2018 Petr Viktorin <pviktori@redhat.com> - 0.66.0-3 * Tue Aug 7 2018 Marek Kasik <mkasik@redhat.com> - 0.63.0-8
- Fix BuildRequires for /usr/bin/python3 - Fix tiling patterns when pattern cell is too far
- Resolves: #1615561 - Resolves: #1557355
* Thu Jul 26 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-2 * Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 0.63.0-7
- Rebuild with fixed binutils
* Fri Jul 27 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.63.0-6
- Rebuild for new binutils
* Thu Jul 26 2018 Marek Kasik <mkasik@redhat.com> - 0.63.0-5
- Fix crash when Object has negative number (CVE-2018-13988) - Fix crash when Object has negative number (CVE-2018-13988)
- Resolves: #1607463 - Resolves: #1607461
* Thu Jul 12 2018 Marek Kasik <mkasik@redhat.com> - 0.66.0-1 * Mon Jul 23 2018 Marek Kasik <mkasik@redhat.com> - 0.63.0-4
- Rebase poppler to 0.66.0 - Use /usr/bin/python3 explicitly
- Resolves: #1600553 - https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3#Transition_Steps
- Resolves: #1605490
* Mon Jun 11 2018 Marek Kasik <mkasik@redhat.com> - 0.62.0-4 * Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.63.0-3
- Drop reversion of removal of Qt4 frontend - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri May 25 2018 Marek Kasik <mkasik@redhat.com> - 0.62.0-3 * Mon May 28 2018 Marek Kasik <mkasik@redhat.com> - 0.63.0-2
- Fix infinite recursion (CVE-2017-18267) - Fix infinite recursion (CVE-2017-18267)
- Resolves: #1578779 - Resolves: #1578780
* Thu May 24 2018 Marek Kasik <mkasik@redhat.com> - 0.62.0-2 * Fri Mar 23 2018 Marek Kasik <mkasik@redhat.com> - 0.63.0-1
- Fix building of poppler with python3 only - Update to 0.63.0
- Resolves: #1580849 - Resolves: #1558001
* Wed Mar 07 2018 Rex Dieter <rdieter@fedoraproject.org> - 0.62.0-2
- BR: gcc-c++, use %%ldconfig_scriptlets %%make_build %%make_install
* Wed Feb 14 2018 David Tardon <dtardon@redhat.com> - 0.62.0-1 * Wed Feb 14 2018 David Tardon <dtardon@redhat.com> - 0.62.0-1
- new upstream release - new upstream release

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (poppler-test-2021-01-11-03a4b9eb854a06a83c465e82de601796c458bbe9.tar.xz) = 257133b261b07076d3207456e3edad324e29911a45a960d4953eb84813ac175bc65be713a10454b52b96711870fcbeee533fd0fd7de8550a87390e833b1af8c5
SHA512 (poppler-24.02.0.tar.xz) = 95a208d21ac4d2d308a7ab3da43b95092ef78cd55ebe873c97e0d6c12d8b9d5c4614f83087616c35e1ed9d67ca606a5e008a98698bd12a332a8206ed4cf55500