diff --git a/.gitignore b/.gitignore index c86862f..728419b 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,23 @@ xpdf-3.02-novms.tar.gz /xpdf-latin2-2011-aug-15.tar.gz /xpdf-thai-2011-aug-15.tar.gz /xpdf-turkish-2011-aug-15.tar.gz +/xpdf-4.00.tar.gz +/xpdf-chinese-simplified-2017-jul-25-NOCMAP.tar.gz +/xpdf-chinese-traditional-2017-jul-25-NOCMAP.tar.gz +/xpdf-japanese-2017-jul-25-NOCMAP.tar.gz +/xpdf-korean-2017-jul-25-NOCMAP.tar.gz +/xpdf-4.01.tar.gz +/xpdf-4.02.tar.gz +/xpdf-chinese-simplified-2020-dec-22-NOCMAP.tar.gz +/xpdf-chinese-traditional-2020-dec-22-NOCMAP.tar.gz +/xpdf-japanese-2020-dec-22-NOCMAP.tar.gz +/xpdf-korean-2020-dec-22-NOCMAP.tar.gz +/xpdf-4.03.tar.gz +/xpdf-4.04.tar.gz +/xpdf-4.05.tar.gz +/xpdf-chinese-simplified-2023-dec-05-NOCMAP.tar.gz +/xpdf-korean-2023-dec-05-NOCMAP.tar.gz +/xpdf-4.05.tar.gz.sig +/xpdf-thai.tar.gz +/xpdf-4.06.tar.gz +/xpdf-4.06.tar.gz.sig diff --git a/gpg-key.txt b/gpg-key.txt new file mode 100644 index 0000000..8c71bda --- /dev/null +++ b/gpg-key.txt @@ -0,0 +1,62 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +PYZrVz++lRb0 +=6AFt +-----END PGP PUBLIC KEY BLOCK----- diff --git a/sources b/sources index 75f71be..86afc35 100644 --- a/sources +++ b/sources @@ -1,12 +1,13 @@ -3bc86c69c8ff444db52461270bef3f44 xpdf-3.04.tar.gz -ae8cdd4759295e02988506e7a570d00c xpdf-arabic-2011-aug-15.tar.gz -abd221d2df88de2011daad8d184dd66b xpdf-chinese-simplified-2011-sep-02-NOCMAP.tar.gz -63431231acd6d8f75e23bb3205793ff3 xpdf-chinese-traditional-2011-sep-02-NOCMAP.tar.gz -ea8ed8fd0ed26b8448e6558827249999 xpdf-cyrillic-2011-aug-15.tar.gz -2e988edf0c57def63717ee14bd6d30dd xpdf-greek-2011-aug-15.tar.gz -e1cb33f22bb71fb01998e5c59f538472 xpdf-hebrew-2011-aug-15.tar.gz -4033838d6bca641d5d2e76c7d1240c3e xpdf-japanese-2011-sep-02-NOCMAP.tar.gz -b9390fe8dc484d9d6ed78359fa520c33 xpdf-korean-2011-sep-02-NOCMAP.tar.gz -c135fe93f933edaa0f042a8d3cc9f799 xpdf-latin2-2011-aug-15.tar.gz -57fc888436f19cdf4a68ef17c17b86b7 xpdf-thai-2011-aug-15.tar.gz -640615c24581b26c4083210bef3013bf xpdf-turkish-2011-aug-15.tar.gz +SHA512 (xpdf-arabic-2011-aug-15.tar.gz) = 1ddaee045c0c3576bda0ebf065021e66e1ac6673d6872aff8e8afb3bae33dd927d920d89761553bade040d20e4b60eb286131bdb2f2d75ec1e833b9a9ce58d3e +SHA512 (xpdf-cyrillic-2011-aug-15.tar.gz) = ab1197c90f8cd3d8664ebbdc7ecefdfb8ec12e24da2f7616cad1d5bc9c7fd172c48db6a18d76172de8342377acc8e1dcd78bcf0fb1ef9f05cf94729e90586827 +SHA512 (xpdf-greek-2011-aug-15.tar.gz) = 2e0e281e09e1abc2f0e40b6787703538d52cb62edcd4c4156698700a5f908afee290c62ad9a6ff4ea74bc42e0a8fe9a7765a212efbc223512d4bb442448ea52f +SHA512 (xpdf-hebrew-2011-aug-15.tar.gz) = 0ebe652f8633151d13ef2403bd293682b511ab86c1391ce187f1fc0274f33bd9c7e6ec682c8f79ac4fd27c74ab81ad2ae334a75f26001092521cff9a73cd0b8a +SHA512 (xpdf-latin2-2011-aug-15.tar.gz) = 5fe0b60bfac7f0f4a26e3e7216de5043f6b94446f464c984b7c25431ec01a5912952c0dc66bb2c7159c9f63e4805689c6cfc761086aad9e59f1f21d0cddb5d15 +SHA512 (xpdf-turkish-2011-aug-15.tar.gz) = a73e90bce8f2a12154b06ef29333a45d96258c0d653d5cb15afd2e5ad9e79a9b617e5f8ebeb20bde545684d50f3bc1349800c99f70c863bdd502c24c266b4fb1 +SHA512 (xpdf-chinese-traditional-2020-dec-22-NOCMAP.tar.gz) = ff25947dbf09b51f9c97aff898b8d33441af230d25c827380f1f5dd4144b5c3d14fc0d1e1ed42e039ff706568a490925f1cafc94ff5f70ae7879827c82dfbc85 +SHA512 (xpdf-japanese-2020-dec-22-NOCMAP.tar.gz) = aff90d0c8f26e1dffd2b178c5ee676cfa520086d28dd56af65ef3fcd016c2770361edeb35974f45328cd62d5cd7dff0ac719e38ee2594bef07e062869289a647 +SHA512 (xpdf-chinese-simplified-2023-dec-05-NOCMAP.tar.gz) = 292a819cca4d6095b6835b30241abbbbb07354adc839c9a49b90f2dd9deb1fc7d8727a9bade3cab88da8e903e00199ecf8672727ae7310cc15e1ad8c282d218b +SHA512 (xpdf-korean-2023-dec-05-NOCMAP.tar.gz) = 3ca81eaee279122a8054fc26f16d85c668d0571a1b249a410346196c2b61081bcdfec61c140a7334a921d80738e908b507ac47a301f3aae37b3050c8e8b77f29 +SHA512 (xpdf-thai.tar.gz) = c738ef97c57630feb4d1bae3df36ba02118f73e770caeef4bd3256740b9aadb94ec07b993a01a6abc9ba711d6dc2900f90eb7e1c7bbbf157f07160be1743d3f1 +SHA512 (xpdf-4.06.tar.gz) = ace2d2c006411ef40f3510fe34809e6ed5fd4a2367ac11a75e9d4795aa5054e72f12e307165d11a25b12609d33b279b9b99d9c072442e98308a77ad022bc8355 +SHA512 (xpdf-4.06.tar.gz.sig) = 2df5d491a2126c9f879896c623193cfb6e7b38da53a1eaac4060b77569d84b2d28a12e3a1285d31bb9a422f774f3d70238d47bfec388db1222fc041627da1ec7 diff --git a/xpdf-3.03-ext.patch b/xpdf-3.03-ext.patch deleted file mode 100644 index 3115d65..0000000 --- a/xpdf-3.03-ext.patch +++ /dev/null @@ -1,51 +0,0 @@ -diff -up xpdf-3.03/goo/gfile.cc.ext xpdf-3.03/goo/gfile.cc ---- xpdf-3.03/goo/gfile.cc.ext 2011-08-15 17:08:53.000000000 -0400 -+++ xpdf-3.03/goo/gfile.cc 2011-08-22 13:43:54.540304026 -0400 -@@ -507,32 +507,14 @@ GBool openTempFile(GString **name, FILE - char *s; - int fd; - -- if (ext) { --#if HAVE_MKSTEMPS -- if ((s = getenv("TMPDIR"))) { -- *name = new GString(s); -- } else { -- *name = new GString("/tmp"); -- } -- (*name)->append("/XXXXXX")->append(ext); -- fd = mkstemps((*name)->getCString(), strlen(ext)); --#else -- if (!(s = tmpnam(NULL))) { -- return gFalse; -- } -+#if HAVE_MKSTEMP -+ if ((s = getenv("TMPDIR"))) { - *name = new GString(s); -- (*name)->append(ext); -- fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600); --#endif - } else { --#if HAVE_MKSTEMP -- if ((s = getenv("TMPDIR"))) { -- *name = new GString(s); -- } else { -- *name = new GString("/tmp"); -- } -- (*name)->append("/XXXXXX"); -- fd = mkstemp((*name)->getCString()); -+ *name = new GString("/tmp"); -+ } -+ (*name)->append("/XXXXXX"); -+ fd = mkstemp((*name)->getCString()); - #else // HAVE_MKSTEMP - if (!(s = tmpnam(NULL))) { - return gFalse; -@@ -540,7 +522,7 @@ GBool openTempFile(GString **name, FILE - *name = new GString(s); - fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600); - #endif // HAVE_MKSTEMP -- } -+ - if (fd < 0 || !(*f = fdopen(fd, mode))) { - delete *name; - *name = NULL; diff --git a/xpdf-3.04-1.fc21.src.rpm b/xpdf-3.04-1.fc21.src.rpm deleted file mode 100644 index d5bd345..0000000 Binary files a/xpdf-3.04-1.fc21.src.rpm and /dev/null differ diff --git a/xpdf-3.04-crash.patch b/xpdf-3.04-crash.patch deleted file mode 100644 index a816d89..0000000 --- a/xpdf-3.04-crash.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -up xpdf-3.04/fofi/FoFiType1.cc.crash xpdf-3.04/fofi/FoFiType1.cc ---- xpdf-3.04/fofi/FoFiType1.cc.crash 2014-05-28 14:50:50.000000000 -0400 -+++ xpdf-3.04/fofi/FoFiType1.cc 2014-05-29 14:56:09.199571189 -0400 -@@ -268,9 +268,14 @@ void FoFiType1::parse() { - } - } - } else { -- if (strtok(buf, " \t") && -- (p = strtok(NULL, " \t\n\r")) && !strcmp(p, "def")) { -- break; -+ p = strtok(buf, " \t\n\r"); -+ if (p) -+ { -+ if (!strcmp(p, "def")) break; -+ if (!strcmp(p, "readonly")) break; -+ // the spec does not says this but i'm mantaining old xpdf behaviour that accepts "foo def" as end of the encoding array -+ p = strtok(buf, " \t\n\r"); -+ if (p && !strcmp(p, "def")) break; - } - } - } -diff -up xpdf-3.04/splash/Splash.cc.crash xpdf-3.04/splash/Splash.cc diff --git a/xpdf-4.00-permissions.patch b/xpdf-4.00-permissions.patch new file mode 100644 index 0000000..54b479a --- /dev/null +++ b/xpdf-4.00-permissions.patch @@ -0,0 +1,132 @@ +diff -up xpdf-4.00/xpdf/PDFCore.cc.permissions xpdf-4.00/xpdf/PDFCore.cc +diff -up xpdf-4.00/xpdf/pdfimages.cc.permissions xpdf-4.00/xpdf/pdfimages.cc +--- xpdf-4.00/xpdf/pdfimages.cc.permissions 2017-08-08 19:22:50.000000000 -0400 ++++ xpdf-4.00/xpdf/pdfimages.cc 2017-08-16 18:08:04.474032500 -0400 +@@ -4,6 +4,8 @@ + // + // Copyright 1998-2003 Glyph & Cog, LLC + // ++// Modified for Debian by Hamish Moffatt, 22 May 2002. ++// + //======================================================================== + + #include +@@ -126,12 +128,14 @@ int main(int argc, char *argv[]) { + } + + // check for copy permission ++#ifdef ENFORCE_PERMISSIONS + if (!doc->okToCopy()) { + error(errNotAllowed, -1, + "Copying of images from this document is not allowed."); + exitCode = 3; + goto err1; + } ++#endif + + // get page range + if (firstPage < 1) +diff -up xpdf-4.00/xpdf/pdftohtml.cc.permissions xpdf-4.00/xpdf/pdftohtml.cc +--- xpdf-4.00/xpdf/pdftohtml.cc.permissions 2017-08-16 18:10:36.656189850 -0400 ++++ xpdf-4.00/xpdf/pdftohtml.cc 2017-08-16 18:11:06.127445692 -0400 +@@ -137,6 +137,7 @@ int main(int argc, char *argv[]) { + goto err1; + } + ++#ifdef ENFORCE_PERMISSIONS + // check for copy permission + if (!doc->okToCopy()) { + error(errNotAllowed, -1, +@@ -144,6 +145,7 @@ int main(int argc, char *argv[]) { + exitCode = 3; + goto err1; + } ++#endif + + // get page range + if (firstPage < 1) { +diff -up xpdf-4.00/xpdf/pdftops.cc.permissions xpdf-4.00/xpdf/pdftops.cc +--- xpdf-4.00/xpdf/pdftops.cc.permissions 2017-08-08 19:22:50.000000000 -0400 ++++ xpdf-4.00/xpdf/pdftops.cc 2017-08-16 18:08:04.475032475 -0400 +@@ -4,6 +4,8 @@ + // + // Copyright 1996-2003 Glyph & Cog, LLC + // ++// Modified for Debian by Hamish Moffatt, 22 May 2002. ++// + //======================================================================== + + #include +@@ -321,12 +323,14 @@ int main(int argc, char *argv[]) { + goto err1; + } + ++#ifdef ENFORCE_PERMISSIONS + // check for print permission + if (!doc->okToPrint()) { + error(errNotAllowed, -1, "Printing this document is not allowed."); + exitCode = 3; + goto err1; + } ++#endif + + // construct PostScript file name + if (argc == 3) { +diff -up xpdf-4.00/xpdf/pdftotext.cc.permissions xpdf-4.00/xpdf/pdftotext.cc +--- xpdf-4.00/xpdf/pdftotext.cc.permissions 2017-08-08 19:22:50.000000000 -0400 ++++ xpdf-4.00/xpdf/pdftotext.cc 2017-08-16 18:08:04.475032475 -0400 +@@ -4,6 +4,8 @@ + // + // Copyright 1997-2013 Glyph & Cog, LLC + // ++// Modified for Debian by Hamish Moffatt, 22 May 2002. ++// + //======================================================================== + + #include +@@ -198,6 +200,7 @@ int main(int argc, char *argv[]) { + goto err2; + } + ++#ifdef ENFORCE_PERMISSIONS + // check for copy permission + if (!doc->okToCopy()) { + error(errNotAllowed, -1, +@@ -205,6 +208,7 @@ int main(int argc, char *argv[]) { + exitCode = 3; + goto err2; + } ++#endif + + // construct text file name + if (argc == 3) { +diff -up xpdf-4.00/xpdf-qt/QtPDFCore.cc.permissions xpdf-4.00/xpdf-qt/QtPDFCore.cc +--- xpdf-4.00/xpdf-qt/QtPDFCore.cc.permissions 2017-08-16 18:09:45.169489907 -0400 ++++ xpdf-4.00/xpdf-qt/QtPDFCore.cc 2017-08-16 18:10:14.375752439 -0400 +@@ -429,9 +429,11 @@ QString QtPDFCore::getSelectedTextQStrin + QChar c; + int i; + ++#ifdef ENFORCE_PERMISSIONS + if (!doc->okToCopy()) { + return ""; + } ++#endif + if (!(s = getSelectedText())) { + return ""; + } +diff -up xpdf-4.00/xpdf-qt/XpdfWidget.cc.permissions xpdf-4.00/xpdf-qt/XpdfWidget.cc +--- xpdf-4.00/xpdf-qt/XpdfWidget.cc.permissions 2017-08-16 18:12:40.775055809 -0400 ++++ xpdf-4.00/xpdf-qt/XpdfWidget.cc 2017-08-16 18:12:45.835928020 -0400 +@@ -1399,7 +1399,11 @@ bool XpdfWidget::okToExtractText() const + if (!core->getDoc()) { + return false; + } ++#ifdef ENFORCE_PERMISSIONS + return (bool)core->getDoc()->okToCopy(); ++#else ++ return true; ++#endif + } catch (GMemException e) { + return false; + } diff --git a/xpdf-4.00-versionedlib.patch b/xpdf-4.00-versionedlib.patch new file mode 100644 index 0000000..2d73a89 --- /dev/null +++ b/xpdf-4.00-versionedlib.patch @@ -0,0 +1,27 @@ +diff -up xpdf-4.00/fofi/CMakeLists.txt.versionedlib xpdf-4.00/fofi/CMakeLists.txt +--- xpdf-4.00/fofi/CMakeLists.txt.versionedlib 2017-08-08 19:22:50.000000000 -0400 ++++ xpdf-4.00/fofi/CMakeLists.txt 2017-08-16 20:06:18.106884951 -0400 +@@ -24,3 +24,5 @@ add_library(fofi_objs OBJECT + add_library(fofi + $ + ) ++ ++set_target_properties(fofi PROPERTIES VERSION 4 SOVERSION 4) +diff -up xpdf-4.00/goo/CMakeLists.txt.versionedlib xpdf-4.00/goo/CMakeLists.txt +--- xpdf-4.00/goo/CMakeLists.txt.versionedlib 2017-08-08 19:22:50.000000000 -0400 ++++ xpdf-4.00/goo/CMakeLists.txt 2017-08-16 20:06:00.525277924 -0400 +@@ -25,3 +25,5 @@ add_library(goo_objs OBJECT + add_library(goo + $ + ) ++ ++set_target_properties(goo PROPERTIES VERSION 4 SOVERSION 4) +diff -up xpdf-4.00/splash/CMakeLists.txt.versionedlib xpdf-4.00/splash/CMakeLists.txt +--- xpdf-4.00/splash/CMakeLists.txt.versionedlib 2017-08-08 19:22:50.000000000 -0400 ++++ xpdf-4.00/splash/CMakeLists.txt 2017-08-16 20:06:41.204368689 -0400 +@@ -44,4 +44,5 @@ if (HAVE_SPLASH) + add_library(splash + $ + ) ++ set_target_properties(splash PROPERTIES VERSION 4 SOVERSION 4) + endif () diff --git a/xpdf-4.01-64bit.patch b/xpdf-4.01-64bit.patch new file mode 100644 index 0000000..64952fc --- /dev/null +++ b/xpdf-4.01-64bit.patch @@ -0,0 +1,60 @@ +diff -up xpdf-4.01/goo/gmem.cc.alloc xpdf-4.01/goo/gmem.cc +--- xpdf-4.01/goo/gmem.cc.alloc 2019-02-18 13:24:19.000000000 -0500 ++++ xpdf-4.01/goo/gmem.cc 2019-02-22 09:37:02.683498383 -0500 +@@ -84,8 +84,8 @@ static size_t gMaxMemInUse = 0; + #endif /* DEBUG_MEM */ + + #ifdef DEBUG_MEM +-void *gmalloc(int size, int ignore) GMEM_EXCEP { +- int size1; ++void *gmalloc(size_t size, int ignore) GMEM_EXCEP { ++ size_t size1; + char *mem; + GMemHdr *hdr; + void *data; +@@ -134,7 +134,7 @@ void *gmalloc(int size, int ignore) GMEM + return data; + } + #else +-void *gmalloc(int size) GMEM_EXCEP { ++void *gmalloc(size_t size) GMEM_EXCEP { + void *p; + + if (size < 0) { +@@ -150,11 +150,11 @@ void *gmalloc(int size) GMEM_EXCEP { + } + #endif + +-void *grealloc(void *p, int size) GMEM_EXCEP { ++void *grealloc(void *p, size_t size) GMEM_EXCEP { + #ifdef DEBUG_MEM + GMemHdr *hdr; + void *q; +- int oldSize; ++ size_t oldSize; + + if (size < 0) { + gMemError("Invalid memory allocation size"); +diff -up xpdf-4.01/goo/gmem.h.alloc xpdf-4.01/goo/gmem.h +--- xpdf-4.01/goo/gmem.h.alloc 2019-02-18 13:24:19.000000000 -0500 ++++ xpdf-4.01/goo/gmem.h 2019-02-22 09:37:02.683498383 -0500 +@@ -37,16 +37,16 @@ extern "C" { + * returns NULL. + */ + #ifdef DEBUG_MEM +-extern void *gmalloc(int size, int ignore = 0) GMEM_EXCEP; ++extern void *gmalloc(size_t size, int ignore = 0) GMEM_EXCEP; + #else +-extern void *gmalloc(int size) GMEM_EXCEP; ++extern void *gmalloc(size_t size) GMEM_EXCEP; + #endif + + /* + * Same as realloc, but prints error message and exits if realloc() + * returns NULL. If

is NULL, calls malloc instead of realloc(). + */ +-extern void *grealloc(void *p, int size) GMEM_EXCEP; ++extern void *grealloc(void *p, size_t size) GMEM_EXCEP; + + /* + * These are similar to gmalloc and grealloc, but take an object count diff --git a/xpdf-4.01-crash.patch b/xpdf-4.01-crash.patch new file mode 100644 index 0000000..468086f --- /dev/null +++ b/xpdf-4.01-crash.patch @@ -0,0 +1,21 @@ +diff -up xpdf-4.01/fofi/FoFiType1.cc.crash xpdf-4.01/fofi/FoFiType1.cc +--- xpdf-4.01/fofi/FoFiType1.cc.crash 2019-02-22 09:33:55.304458147 -0500 ++++ xpdf-4.01/fofi/FoFiType1.cc 2019-02-22 09:36:30.966169469 -0500 +@@ -276,9 +276,14 @@ void FoFiType1::parse() { + p += 3; + } + } else { +- if (strtok(buf, " \t") && +- (p = strtok(NULL, " \t\n\r")) && !strcmp(p, "def")) { +- break; ++ p = strtok(buf, " \t\n\r"); ++ if (p) ++ { ++ if (!strcmp(p, "def")) break; ++ if (!strcmp(p, "readonly")) break; ++ // the spec does not says this but i'm mantaining old xpdf behaviour that accepts "foo def" as end of the encoding array ++ p = strtok(buf, " \t\n\r"); ++ if (p && !strcmp(p, "def")) break; + } + } + } diff --git a/xpdf-4.01-ext.patch b/xpdf-4.01-ext.patch new file mode 100644 index 0000000..8828273 --- /dev/null +++ b/xpdf-4.01-ext.patch @@ -0,0 +1,37 @@ +diff -up xpdf-4.01/goo/gfile.cc.ext xpdf-4.01/goo/gfile.cc +--- xpdf-4.01/goo/gfile.cc.ext 2019-02-18 13:24:19.000000000 -0500 ++++ xpdf-4.01/goo/gfile.cc 2019-02-22 09:33:17.023259251 -0500 +@@ -473,24 +473,6 @@ GBool openTempFile(GString **name, FILE + char *s; + int fd; + +- if (ext) { +-#if HAVE_MKSTEMPS +- if ((s = getenv("TMPDIR"))) { +- *name = new GString(s); +- } else { +- *name = new GString("/tmp"); +- } +- (*name)->append("/XXXXXX")->append(ext); +- fd = mkstemps((*name)->getCString(), (int)strlen(ext)); +-#else +- if (!(s = tmpnam(NULL))) { +- return gFalse; +- } +- *name = new GString(s); +- (*name)->append(ext); +- fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600); +-#endif +- } else { + #if HAVE_MKSTEMP + if ((s = getenv("TMPDIR"))) { + *name = new GString(s); +@@ -506,7 +488,7 @@ GBool openTempFile(GString **name, FILE + *name = new GString(s); + fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600); + #endif // HAVE_MKSTEMP +- } ++ + if (fd < 0 || !(*f = fdopen(fd, mode))) { + delete *name; + *name = NULL; diff --git a/xpdf-4.01-urw-base35-fonts.patch b/xpdf-4.01-urw-base35-fonts.patch new file mode 100644 index 0000000..5029cd5 --- /dev/null +++ b/xpdf-4.01-urw-base35-fonts.patch @@ -0,0 +1,55 @@ +diff -up xpdf-4.01/xpdf/GlobalParams.cc.urw-font-fix xpdf-4.01/xpdf/GlobalParams.cc +--- xpdf-4.01/xpdf/GlobalParams.cc.urw-font-fix 2019-02-18 13:24:19.000000000 -0500 ++++ xpdf-4.01/xpdf/GlobalParams.cc 2019-02-22 09:44:56.842457771 -0500 +@@ -79,20 +79,20 @@ static struct { + const char *obliqueFont; // name of font to oblique + double obliqueFactor; // oblique sheer factor + } displayFontTab[] = { +- {"Courier", "n022003l.pfb", "cour.ttf", "Courier", "Courier", NULL, 0}, +- {"Courier-Bold", "n022004l.pfb", "courbd.ttf", "Courier", "Courier Bold", NULL, 0}, +- {"Courier-BoldOblique", "n022024l.pfb", "courbi.ttf", "Courier", "Courier Bold Oblique", "Courier-Bold", 0.212557}, +- {"Courier-Oblique", "n022023l.pfb", "couri.ttf", "Courier", "Courier Oblique", "Courier", 0.212557}, +- {"Helvetica", "n019003l.pfb", "arial.ttf", "Helvetica", "Helvetica", NULL, 0}, +- {"Helvetica-Bold", "n019004l.pfb", "arialbd.ttf", "Helvetica", "Helvetica-Bold", NULL, 0}, +- {"Helvetica-BoldOblique", "n019024l.pfb", "arialbi.ttf", "Helvetica", "Helvetica Bold Oblique", "Helvetica-Bold", 0.212557}, +- {"Helvetica-Oblique", "n019023l.pfb", "ariali.ttf", "Helvetica", "Helvetica Oblique", "Helvetica", 0.212557}, +- {"Symbol", "s050000l.pfb", NULL, "Symbol", "Symbol", NULL, 0}, +- {"Times-Bold", "n021004l.pfb", "timesbd.ttf", "Times", "Times-Bold", NULL, 0}, +- {"Times-BoldItalic", "n021024l.pfb", "timesbi.ttf", "Times", "Times-BoldItalic", NULL, 0}, +- {"Times-Italic", "n021023l.pfb", "timesi.ttf", "Times", "Times-Italic", NULL, 0}, +- {"Times-Roman", "n021003l.pfb", "times.ttf", "Times", "Times-Roman", NULL, 0}, +- {"ZapfDingbats", "d050000l.pfb", NULL, "ZapfDingbats", "Zapf Dingbats", NULL, 0}, ++ {"Courier", "NimbusMonoPS-Regular.t1", "cour.ttf", "Courier", "Courier", NULL, 0}, ++ {"Courier-Bold", "NimbusMonoPS-Bold.t1", "courbd.ttf", "Courier", "Courier Bold", NULL, 0}, ++ {"Courier-BoldOblique", "NimbusMonoPS-BoldItalic.t1", "courbi.ttf", "Courier", "Courier Bold Oblique", "Courier-Bold", 0.212557}, ++ {"Courier-Oblique", "NimbusMonoPS-Italic.t1", "couri.ttf", "Courier", "Courier Oblique", "Courier", 0.212557}, ++ {"Helvetica", "NimbusSans-Regular.t1", "arial.ttf", "Helvetica", "Helvetica", NULL, 0}, ++ {"Helvetica-Bold", "NimbusSans-Bold.t1", "arialbd.ttf", "Helvetica", "Helvetica-Bold", NULL, 0}, ++ {"Helvetica-BoldOblique", "NimbusSans-BoldItalic.t1", "arialbi.ttf", "Helvetica", "Helvetica Bold Oblique", "Helvetica-Bold", 0.212557}, ++ {"Helvetica-Oblique", "NimbusSans-Italic.t1", "ariali.ttf", "Helvetica", "Helvetica Oblique", "Helvetica", 0.212557}, ++ {"Symbol", "StandardSymbolsPS.t1", NULL, "Symbol", "Symbol", NULL, 0}, ++ {"Times-Bold", "NimbusRoman-Bold.t1", "timesbd.ttf", "Times", "Times-Bold", NULL, 0}, ++ {"Times-BoldItalic", "NimbusRoman-BoldItalic.t1", "timesbi.ttf", "Times", "Times-BoldItalic", NULL, 0}, ++ {"Times-Italic", "NimbusRoman-Italic.t1", "timesi.ttf", "Times", "Times-Italic", NULL, 0}, ++ {"Times-Roman", "NimbusRoman-Regular.t1", "times.ttf", "Times", "Times-Roman", NULL, 0}, ++ {"ZapfDingbats", "D050000L.t1", NULL, "ZapfDingbats", "Zapf Dingbats", NULL, 0}, + {NULL} + }; + +@@ -104,6 +104,7 @@ static const char *displayFontDirs[] = { + }; + #else + static const char *displayFontDirs[] = { ++ "/usr/share/fonts/urw-base35", + "/usr/share/ghostscript/fonts", + "/usr/local/share/ghostscript/fonts", + "/usr/share/fonts/default/Type1", +@@ -2204,7 +2205,7 @@ UnicodeRemapping *GlobalParams::getUnico + } + + GString *GlobalParams::findFontFile(GString *fontName) { +- static const char *exts[] = { ".pfa", ".pfb", ".ttf", ".ttc", ".otf" }; ++ static const char *exts[] = { ".pfa", ".pfb", ".t1", ".ttf", ".ttc", ".otf" }; + GString *path, *dir; + #ifdef _WIN32 + GString *fontNameU; diff --git a/xpdf-4.02-CVE-2019-12360.patch b/xpdf-4.02-CVE-2019-12360.patch new file mode 100644 index 0000000..808ce35 --- /dev/null +++ b/xpdf-4.02-CVE-2019-12360.patch @@ -0,0 +1,79 @@ +diff -up xpdf-4.02/fofi/FoFiTrueType.cc.CVE-2019-12360 xpdf-4.02/fofi/FoFiTrueType.cc +--- xpdf-4.02/fofi/FoFiTrueType.cc.CVE-2019-12360 2020-06-26 15:15:48.156850534 -0400 ++++ xpdf-4.02/fofi/FoFiTrueType.cc 2020-06-26 15:15:35.204068577 -0400 +@@ -20,6 +20,7 @@ + #include "gtypes.h" + #include "gmem.h" + #include "gmempp.h" ++#include "GLikely.h" + #include "GString.h" + #include "GHash.h" + #include "FoFiType1C.h" +@@ -1764,7 +1765,7 @@ void FoFiTrueType::cvtSfnts(FoFiOutputFu + GBool ok; + Guint checksum; + int nNewTables; +- int glyfTableLen, length, pos, glyfPos, i, j, k; ++ int glyfTableLen, length, pos, glyfPos, i, j, k, vmtxTabLength; + Guchar vheaTab[36] = { + 0, 1, 0, 0, // table version number + 0, 0, // ascent +@@ -1891,6 +1892,7 @@ void FoFiTrueType::cvtSfnts(FoFiOutputFu + } + } + vmtxTab = NULL; // make gcc happy ++ vmtxTabLength = 0; + advance = 0; // make gcc happy + if (needVerticalMetrics) { + needVhea = seekTable("vhea") < 0; +@@ -1951,6 +1953,7 @@ void FoFiTrueType::cvtSfnts(FoFiOutputFu + checksum = computeTableChecksum(vheaTab, length); + } else if (needVerticalMetrics && i == t42VmtxTable) { + length = 4 + (nGlyphs - 1) * 2; ++ vmtxTabLength = length; + vmtxTab = (Guchar *)gmalloc(length); + vmtxTab[0] = (Guchar)(advance / 256); + vmtxTab[1] = (Guchar)(advance % 256); +@@ -2065,8 +2068,16 @@ void FoFiTrueType::cvtSfnts(FoFiOutputFu + dumpString(file + tables[j].offset, tables[j].len, + outputFunc, outputStream); + } else if (needVerticalMetrics && i == t42VheaTable) { ++ if (unlikely(length > (int)sizeof(vheaTab))) { ++ //~ error(errSyntaxWarning, -1, "length bigger than vheaTab size"); ++ length = sizeof(vheaTab); ++ } + dumpString(vheaTab, length, outputFunc, outputStream); + } else if (needVerticalMetrics && i == t42VmtxTable) { ++ if (unlikely(length > vmtxTabLength)) { ++ //~ error(errSyntaxWarning, -1, "length bigger than vmtxTab size"); ++ length = vmtxTabLength; ++ } + dumpString(vmtxTab, length, outputFunc, outputStream); + } + } +diff -up xpdf-4.02/goo/GLikely.h.CVE-2019-12360 xpdf-4.02/goo/GLikely.h +--- xpdf-4.02/goo/GLikely.h.CVE-2019-12360 2020-06-26 15:11:32.839149675 -0400 ++++ xpdf-4.02/goo/GLikely.h 2020-06-26 15:11:07.713572773 -0400 +@@ -0,0 +1,22 @@ ++//======================================================================== ++// ++// GLikely.h ++// ++// This file is licensed under the GPLv2 or later ++// ++// Copyright (C) 2008 Kees Cook ++// ++//======================================================================== ++ ++#ifndef GLIKELY_H ++#define GLIKELY_H ++ ++#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) ++# define likely(x) __builtin_expect((x), 1) ++# define unlikely(x) __builtin_expect((x), 0) ++#else ++# define likely(x) (x) ++# define unlikely(x) (x) ++#endif ++ ++#endif diff --git a/xpdf-4.02-CVE-2019-17064.patch b/xpdf-4.02-CVE-2019-17064.patch new file mode 100644 index 0000000..a49bf60 --- /dev/null +++ b/xpdf-4.02-CVE-2019-17064.patch @@ -0,0 +1,19 @@ +diff -up xpdf-4.02/xpdf/Catalog.cc.CVE-2019-17064 xpdf-4.02/xpdf/Catalog.cc +--- xpdf-4.02/xpdf/Catalog.cc.CVE-2019-17064 2019-12-02 12:21:54.480562087 -0500 ++++ xpdf-4.02/xpdf/Catalog.cc 2019-12-02 12:22:37.047605136 -0500 +@@ -159,6 +159,7 @@ Catalog::Catalog(PDFDoc *docA) { + baseURI = NULL; + form = NULL; + embeddedFiles = NULL; ++ pageLabels = NULL; + #if MULTITHREADED + gInitMutex(&pageMutex); + #endif +@@ -241,7 +242,6 @@ Catalog::Catalog(PDFDoc *docA) { + // get the ViewerPreferences object + catDict.dictLookupNF("ViewerPreferences", &viewerPrefs); + +- pageLabels = NULL; + if (catDict.dictLookup("PageLabels", &obj)->isDict()) { + readPageLabelTree(&obj); + } diff --git a/xpdf-4.04-GlobalParams-null-fix.patch b/xpdf-4.04-GlobalParams-null-fix.patch new file mode 100644 index 0000000..eaa073c --- /dev/null +++ b/xpdf-4.04-GlobalParams-null-fix.patch @@ -0,0 +1,12 @@ +diff -up xpdf-4.04/xpdf/GlobalParams.h.null-fix xpdf-4.04/xpdf/GlobalParams.h +--- xpdf-4.04/xpdf/GlobalParams.h.null-fix 2023-01-30 14:10:42.286805370 -0500 ++++ xpdf-4.04/xpdf/GlobalParams.h 2023-01-30 14:10:50.383895185 -0500 +@@ -237,7 +237,7 @@ public: + + // Initialize the global parameters by attempting to read a config + // file. +- GlobalParams(const char *cfgFileName); ++ GlobalParams(const char *cfgFileName = NULL); + + ~GlobalParams(); + diff --git a/xpdf-4.04-shared-xpdf-lib.patch b/xpdf-4.04-shared-xpdf-lib.patch new file mode 100644 index 0000000..b4a7544 --- /dev/null +++ b/xpdf-4.04-shared-xpdf-lib.patch @@ -0,0 +1,17 @@ +diff -up xpdf-4.04/xpdf/CMakeLists.txt.shared-xpdf-lib xpdf-4.04/xpdf/CMakeLists.txt +--- xpdf-4.04/xpdf/CMakeLists.txt.shared-xpdf-lib 2023-01-30 14:30:07.185779720 -0500 ++++ xpdf-4.04/xpdf/CMakeLists.txt 2023-01-30 14:31:41.942842314 -0500 +@@ -78,6 +78,13 @@ add_library(xpdf_objs OBJECT + set_property(TARGET xpdf_objs + PROPERTY POSITION_INDEPENDENT_CODE True) + ++add_library(xpdfcore ++ $ ++) ++ ++set_target_properties(xpdfcore PROPERTIES VERSION 4 SOVERSION 4) ++ ++ + #--- object files needed by XpdfWidget + + if ((QT4_FOUND OR Qt5Widgets_FOUND OR Qt6Widgets_FOUND) diff --git a/xpdf-4.05-CVE-2024-4141.patch b/xpdf-4.05-CVE-2024-4141.patch new file mode 100644 index 0000000..906444b --- /dev/null +++ b/xpdf-4.05-CVE-2024-4141.patch @@ -0,0 +1,22 @@ +diff -up xpdf-4.05/fofi/FoFiType1.cc.CVE-2024-4141 xpdf-4.05/fofi/FoFiType1.cc +--- xpdf-4.05/fofi/FoFiType1.cc.CVE-2024-4141 2024-05-29 10:19:51.918225689 -0400 ++++ xpdf-4.05/fofi/FoFiType1.cc 2024-05-29 10:20:53.406160594 -0400 +@@ -193,7 +193,8 @@ void FoFiType1::parse() { + char *line, *line1, *p, *p2; + char buf[256]; + char c; +- int n, code, base, i, j; ++ unsigned int code; ++ int n, base, i, j; + GBool gotMatrix, startsWithDup, endsWithDup; + + gotMatrix = gFalse; +@@ -262,7 +263,7 @@ void FoFiType1::parse() { + } + ++p; + for (p2 = p; *p2 && *p2 != ' ' && *p2 != '\t'; ++p2) ; +- if (code >= 0 && code < 256) { ++ if (code < 256) { + c = *p2; + *p2 = '\0'; + gfree(encoding[code]); diff --git a/xpdf-4.06-permissions.patch b/xpdf-4.06-permissions.patch new file mode 100644 index 0000000..0192028 --- /dev/null +++ b/xpdf-4.06-permissions.patch @@ -0,0 +1,131 @@ +diff -up xpdf-4.06/xpdf/pdfimages.cc.permissions xpdf-4.06/xpdf/pdfimages.cc +--- xpdf-4.06/xpdf/pdfimages.cc.permissions 2025-11-13 17:08:30.000000000 -0500 ++++ xpdf-4.06/xpdf/pdfimages.cc 2025-11-18 15:27:00.093784988 -0500 +@@ -4,6 +4,8 @@ + // + // Copyright 1998-2003 Glyph & Cog, LLC + // ++// Modified for Debian by Hamish Moffatt, 22 May 2002. ++// + //======================================================================== + + #include +@@ -153,12 +155,14 @@ int main(int argc, char *argv[]) { + } + + // check for copy permission ++#ifdef ENFORCE_PERMISSIONS + if (!listOnly && !doc->okToCopy()) { + error(errNotAllowed, -1, + "Copying of images from this document is not allowed."); + exitCode = 3; + goto err1; + } ++#endif + + // get page range + if (firstPage < 1) +diff -up xpdf-4.06/xpdf/pdftohtml.cc.permissions xpdf-4.06/xpdf/pdftohtml.cc +--- xpdf-4.06/xpdf/pdftohtml.cc.permissions 2025-11-13 17:08:30.000000000 -0500 ++++ xpdf-4.06/xpdf/pdftohtml.cc 2025-11-18 15:25:43.149122766 -0500 +@@ -183,6 +183,7 @@ int main(int argc, char *argv[]) { + goto err1; + } + ++#ifdef ENFORCE_PERMISSIONS + // check for copy permission + if (!doc->okToCopy()) { + error(errNotAllowed, -1, +@@ -190,6 +191,7 @@ int main(int argc, char *argv[]) { + exitCode = 3; + goto err1; + } ++#endif + + // get page range + if (firstPage < 1) { +diff -up xpdf-4.06/xpdf/pdftops.cc.permissions xpdf-4.06/xpdf/pdftops.cc +--- xpdf-4.06/xpdf/pdftops.cc.permissions 2025-11-13 17:08:30.000000000 -0500 ++++ xpdf-4.06/xpdf/pdftops.cc 2025-11-18 15:25:43.149260566 -0500 +@@ -4,6 +4,8 @@ + // + // Copyright 1996-2003 Glyph & Cog, LLC + // ++// Modified for Debian by Hamish Moffatt, 22 May 2002. ++// + //======================================================================== + + #include +@@ -337,12 +339,14 @@ int main(int argc, char *argv[]) { + goto err1; + } + ++#ifdef ENFORCE_PERMISSIONS + // check for print permission + if (!doc->okToPrint()) { + error(errNotAllowed, -1, "Printing this document is not allowed."); + exitCode = 3; + goto err1; + } ++#endif + + // construct PostScript file name + if (argc == 3) { +diff -up xpdf-4.06/xpdf/pdftotext.cc.permissions xpdf-4.06/xpdf/pdftotext.cc +--- xpdf-4.06/xpdf/pdftotext.cc.permissions 2025-11-13 17:08:30.000000000 -0500 ++++ xpdf-4.06/xpdf/pdftotext.cc 2025-11-18 15:25:43.149380451 -0500 +@@ -4,6 +4,8 @@ + // + // Copyright 1997-2013 Glyph & Cog, LLC + // ++// Modified for Debian by Hamish Moffatt, 22 May 2002. ++// + //======================================================================== + + #include +@@ -248,6 +250,7 @@ int main(int argc, char *argv[]) { + goto err2; + } + ++#ifdef ENFORCE_PERMISSIONS + // check for copy permission + if (!doc->okToCopy()) { + error(errNotAllowed, -1, +@@ -255,6 +258,7 @@ int main(int argc, char *argv[]) { + exitCode = 3; + goto err2; + } ++#endif + + // construct text file name + if (argc == 3) { +diff -up xpdf-4.06/xpdf-qt/QtPDFCore.cc.permissions xpdf-4.06/xpdf-qt/QtPDFCore.cc +--- xpdf-4.06/xpdf-qt/QtPDFCore.cc.permissions 2025-11-13 17:08:30.000000000 -0500 ++++ xpdf-4.06/xpdf-qt/QtPDFCore.cc 2025-11-18 15:25:43.149536859 -0500 +@@ -494,9 +494,11 @@ QString QtPDFCore::getSelectedTextQStrin + QString qs; + int i; + ++#ifdef ENFORCE_PERMISSIONS + if (!doc->okToCopy()) { + return ""; + } ++#endif + if (!(s = getSelectedText())) { + return ""; + } +diff -up xpdf-4.06/xpdf-qt/XpdfWidget.cc.permissions xpdf-4.06/xpdf-qt/XpdfWidget.cc +--- xpdf-4.06/xpdf-qt/XpdfWidget.cc.permissions 2025-11-13 17:08:30.000000000 -0500 ++++ xpdf-4.06/xpdf-qt/XpdfWidget.cc 2025-11-18 15:25:43.149737940 -0500 +@@ -1526,7 +1526,11 @@ bool XpdfWidget::okToExtractText() const + if (!core->getDoc()) { + return false; + } ++#ifdef ENFORCE_PERMISSIONS + return (bool)core->getDoc()->okToCopy(); ++#else ++ return true; ++#endif + } catch (GMemException e) { + return false; + } diff --git a/xpdf-4.06-urw-base35-fonts.patch b/xpdf-4.06-urw-base35-fonts.patch new file mode 100644 index 0000000..0fdc470 --- /dev/null +++ b/xpdf-4.06-urw-base35-fonts.patch @@ -0,0 +1,133 @@ +diff -up xpdf-4.06/xpdf/GlobalParams.cc.urw-font-fix xpdf-4.06/xpdf/GlobalParams.cc +--- xpdf-4.06/xpdf/GlobalParams.cc.urw-font-fix 2025-11-13 17:08:30.000000000 -0500 ++++ xpdf-4.06/xpdf/GlobalParams.cc 2025-11-18 15:23:11.114577091 -0500 +@@ -84,98 +84,98 @@ static struct { + double obliqueFactor; // oblique sheer factor + } displayFontTab[] = { + {"Courier", // name +- "n022003l.pfb", // t1FileName ++ "NimbusMonoPS-Regular.t1", // t1FileName + "cour.ttf", // ttFileName + "Courier", "Courier", // macFileName, macFontName + "NimbusMonoPS-Regular", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"Courier-Bold", // name +- "n022004l.pfb", // t1FileName ++ "NimbusMonoPS-Bold.t1", // t1FileName + "courbd.ttf", // ttFileName + "Courier", "Courier Bold", // macFileName, macFontName + "NimbusMonoPS-Bold", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"Courier-BoldOblique", // name +- "n022024l.pfb", // t1FileName ++ "NimbusMonoPS-BoldItalic.t1", // t1FileName + "courbi.ttf", // ttFileName + "Courier", "Courier Bold Oblique", // macFileName, macFontName + "NimbusMonoPS-BoldItalic", // fcFontName + "Courier-Bold", 0.212557 // obliqueFont, obliqueFactor + }, + {"Courier-Oblique", // name +- "n022023l.pfb", // t1FileName ++ "NimbusMonoPS-Italic.t1", // t1FileName + "couri.ttf", // ttFileName + "Courier", "Courier Oblique", // macFileName, macFontName + "NimbusMonoPS-Italic", // fcFontName + "Courier", 0.212557 // obliqueFont, obliqueFactor + }, + {"Helvetica", // name +- "n019003l.pfb", // t1FileName ++ "NimbusSans-Regular.t1", // t1FileName + "arial.ttf", // ttFileName + "Helvetica", "Helvetica", // macFileName, macFontName + "NimbusSans-Regular", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"Helvetica-Bold", // name +- "n019004l.pfb", // t1FileName ++ "NimbusSans-Bold.t1", // t1FileName + "arialbd.ttf", // ttFileName + "Helvetica", "Helvetica Bold", // macFileName, macFontName + "NimbusSans-Bold", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"Helvetica-BoldOblique", // name +- "n019024l.pfb", // t1FileName ++ "NimbusSans-BoldItalic.t1", // t1FileName + "arialbi.ttf", // ttFileName + "Helvetica", "Helvetica Bold Oblique", // macFileName, macFontName + "NimbusSans-BoldItalic", // fcFontName + "Helvetica-Bold", 0.212557 // obliqueFont, obliqueFactor + }, + {"Helvetica-Oblique", // name +- "n019023l.pfb", // t1FileName ++ "NimbusSans-Italic.t1", // t1FileName + "ariali.ttf", // ttFileName + "Helvetica", "Helvetica Oblique", // macFileName, macFontName + "NimbusSans-Italic", // fcFontName + "Helvetica", 0.212557 // obliqueFont, obliqueFactor + }, + {"Symbol", // name +- "s050000l.pfb", // t1FileName ++ "StandardSymbolsPS.t1", // t1FileName + NULL, // ttFileName + "Symbol", "Symbol", // macFileName, macFontName + "Standard Symbols PS", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"Times-Bold", // name +- "n021004l.pfb", // t1FileName ++ "NimbusRoman-Bold.t1", // t1FileName + "timesbd.ttf", // ttFileName + "Times", "Times Bold", // macFileName, macFontName + "NimbusRoman-Bold", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"Times-BoldItalic", // name +- "n021024l.pfb", // t1FileName ++ "NimbusRoman-BoldItalic.t1", // t1FileName + "timesbi.ttf", // ttFileName + "Times", "Times Bold Italic", // macFileName, macFontName + "NimbusRoman-BoldItalic", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"Times-Italic", // name +- "n021023l.pfb", // t1FileName ++ "NimbusRoman-Italic.t1", // t1FileName + "timesi.ttf", // ttFileName + "Times", "Times Italic", // macFileName, macFontName + "NimbusRoman-Italic", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"Times-Roman", // name +- "n021003l.pfb", // t1FileName ++ "NimbusRoman-Regular.t1", // t1FileName + "times.ttf", // ttFileName + "Times", "Times Roman", // macFileName, macFontName + "NimbusRoman-Regular", // fcFontName + NULL, 0 // obliqueFont, obliqueFactor + }, + {"ZapfDingbats", // name +- "d050000l.pfb", // t1FileName ++ "D050000L.t1", // t1FileName + NULL, // ttFileName + "ZapfDingbats", "Zapf Dingbats", // macFileName, macFontName + "D050000L", // fcFontName +@@ -192,6 +192,7 @@ static const char *displayFontDirs[] = { + "c:/windows/fonts", + "c:/winnt/fonts", + #else // _WIN32 ++ "/usr/share/fonts/urw-base35", + "/usr/share/ghostscript/fonts", + "/usr/local/share/ghostscript/fonts", + "/usr/share/fonts/default/Type1", +@@ -2788,7 +2789,7 @@ UnicodeRemapping *GlobalParams::getUnico + } + + GString *GlobalParams::findFontFile(GString *fontName) { +- static const char *exts[] = { ".pfa", ".pfb", ".ttf", ".ttc", ".otf" }; ++ static const char *exts[] = { ".pfa", ".pfb", ".t1", ".ttf", ".ttc", ".otf" }; + GString *path, *dir; + #ifdef _WIN32 + GString *fontNameU; diff --git a/xpdf.spec b/xpdf.spec index 40b2d74..9c5c715 100644 --- a/xpdf.spec +++ b/xpdf.spec @@ -1,25 +1,46 @@ +%undefine __cmake_in_source_build + Summary: A PDF file viewer for the X Window System Name: xpdf -Version: 3.04 -Release: 11%{?dist} -License: GPLv2 or GPLv3 +Version: 4.06 +Release: 3%{?dist} +License: (GPL-2.0-only OR GPL-3.0-only) AND BSD-3-Clause Epoch: 1 -Url: http://www.foolabs.com/xpdf/ -Group: Applications/Publishing +Url: https://www.xpdfreader.com/ -Source0: ftp://ftp.foolabs.com/pub/xpdf/%{name}-%{version}.tar.gz -# We have to pull the CMap files out due to non-free license. -# Source3: ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified-2011-sep-02.tar.gz -Source3: xpdf-chinese-simplified-2011-sep-02-NOCMAP.tar.gz -# Source4: ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-traditional-2011-sep-02.tar.gz -Source4: xpdf-chinese-traditional-2011-sep-02-NOCMAP.tar.gz -# Source5: ftp://ftp.foolabs.com/pub/xpdf/xpdf-japanese-2011-sep-02.tar.gz -Source5: xpdf-japanese-2011-sep-02-NOCMAP.tar.gz -# Source6: ftp://ftp.foolabs.com/pub/xpdf/xpdf-korean-2011-sep-02.tar.gz -Source6: xpdf-korean-2011-sep-02-NOCMAP.tar.gz +Source0: https://dl.xpdfreader.com/%{name}-%{version}.tar.gz +Source1: https://dl.xpdfreader.com/%{name}-%{version}.tar.gz.sig +Source2: https://www.xpdfreader.com/gpg-key.txt +%if 0%{?fedora} +# We have to pull the following CMap files out due to non-free license. +# CMap/Adobe-GB1-UCS2 +# CMap/GBK-EUC-UCS2 +# CMap/GBpc-EUC-UCS2 +# CMap/GBpc-EUC-UCS2C +# Source3: http://www.xpdfreader.com/dl/xpdf-chinese-simplified.tar.gz +Source3: xpdf-chinese-simplified-2023-dec-05-NOCMAP.tar.gz +# CMap/Adobe-CNS1-UCS2 +# CMap/B5pc-UCS2 +# CMap/B5pc-UCS2C +# CMap/ETen-B5-UCS2 +# Source4: http://www.xpdfreader.com/dl/xpdf-chinese-traditional.tar.gz +Source4: xpdf-chinese-traditional-2020-dec-22-NOCMAP.tar.gz +# CMap/90ms-RKSJ-UCS2 +# CMap/90pv-RKSJ-UCS2 +# CMap/90pv-RKSJ-UCS2C +# CMap/Adobe-Japan1-UCS2 +# Source5: http://www.xpdfreader.com/dl/xpdf-japanese.tar.gz +Source5: xpdf-japanese-2020-dec-22-NOCMAP.tar.gz +# CMap/Adobe-Korea1-UCS2 +# CMap/KSCms-UHC-UCS2 +# CMap/KSCpc-EUC-UCS2 +# CMap/KSCpc-EUC-UCS2C +# Source6: http://www.xpdfreader.com/dl/xpdf-korean.tar.gz +Source6: xpdf-korean-2023-dec-05-NOCMAP.tar.gz # cyrillic and thai don't have CMap files to worry about. Source7: ftp://ftp.foolabs.com/pub/xpdf/xpdf-cyrillic-2011-aug-15.tar.gz -Source8: ftp://ftp.foolabs.com/pub/xpdf/xpdf-thai-2011-aug-15.tar.gz +# thai: 2025-08-13 +Source8: https://dl.xpdfreader.com/xpdf-thai.tar.gz Source10: xpdf.desktop Source11: xpdf.png Source12: ftp://ftp.foolabs.com/pub/xpdf/xpdf-arabic-2011-aug-15.tar.gz @@ -27,26 +48,29 @@ Source13: ftp://ftp.foolabs.com/pub/xpdf/xpdf-greek-2011-aug-15.tar.gz Source14: ftp://ftp.foolabs.com/pub/xpdf/xpdf-hebrew-2011-aug-15.tar.gz Source15: ftp://ftp.foolabs.com/pub/xpdf/xpdf-latin2-2011-aug-15.tar.gz Source16: ftp://ftp.foolabs.com/pub/xpdf/xpdf-turkish-2011-aug-15.tar.gz +%endif -Patch0: xpdf-3.04-redhat-new.patch -Patch3: xpdf-3.03-ext.patch -Patch6: xpdf-3.00-core.patch -Patch7: xpdf-3.00-xfont.patch +Patch3: xpdf-4.01-ext.patch Patch9: xpdf-3.00-papersize.patch -Patch11: xpdf-3.04-crash.patch -Patch12: xpdf-3.04-64bit.patch +Patch11: xpdf-4.01-crash.patch +Patch12: xpdf-4.01-64bit.patch Patch15: xpdf-3.04-nocmap.patch -Patch16: xpdf-3.02-fontlist.patch -Patch19: xpdf-3.02-additionalzoom.patch -Patch20: xpdf-3.04-pdftopng.patch -Patch21: xpdf-3.04-localized.patch -Patch22: xpdf-fix-pdftopng-resolution.patch +Patch25: xpdf-4.00-versionedlib.patch +Patch26: xpdf-4.06-urw-base35-fonts.patch +Patch28: xpdf-4.04-GlobalParams-null-fix.patch +# https://forum.xpdfreader.com/viewtopic.php?t=42521 +Patch29: xpdf-4.04-shared-xpdf-lib.patch # Security patches +# Based on +# https://gitlab.freedesktop.org/poppler/poppler/commit/cdb7ad95f7c8fbf63ade040d8a07ec96467042fc +# https://gitlab.freedesktop.org/poppler/poppler/commit/bf4aae25a244b1033a2479b9a8f633224f7d5de5 +Patch101: xpdf-4.02-CVE-2019-12360.patch +# merged in 4.06 +# Patch102: xpdf-4.05-CVE-2024-4141.patch # Debian patches -Patch200: 02_permissions.dpatch -Patch201: 10_add_accelerators.dpatch +Patch200: xpdf-4.06-permissions.patch # Proper stream encoding on 64bit platforms Patch203: fix-444648.dpatch @@ -55,18 +79,26 @@ Requires: xdg-utils Requires: poppler-utils Requires: xorg-x11-fonts-ISO8859-1-75dpi Requires: xorg-x11-fonts-ISO8859-1-100dpi +Requires: qt5-qtsvg -%if 0%{?rhel} -BuildRequires: openmotif-devel -%else -# Used to use lesstif-devel here. If you are trying to build on Fedora < 17, try that. -BuildRequires: motif-devel -%endif +%if 0%{?fedora} +BuildRequires: qt5-qtbase-devel, cmake BuildRequires: freetype-devel >= 2.1.7 +BuildRequires: fontconfig-devel BuildRequires: desktop-file-utils BuildRequires: libpaper-devel BuildRequires: libpng-devel BuildRequires: libXpm-devel +BuildRequires: cups-devel +%else +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: freetype-devel >= 2.1.7 +BuildRequires: fontconfig-devel +BuildRequires: libpng-devel +%endif +# for %%gpgverify +BuildRequires: gnupg2 Provides: %{name}-chinese-simplified = %{version}-%{release} Obsoletes: %{name}-chinese-simplified @@ -77,39 +109,62 @@ Obsoletes: %{name}-korean Provides: %{name}-japanese = %{version}-%{release} Obsoletes: %{name}-japanese -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Requires: %{name}-libs%{_isa} = %{epoch}:%{version}-%{release} %description Xpdf is an X Window System based viewer for Portable Document Format (PDF) files. Xpdf is a small and efficient program which uses standard X fonts. +%package devel +%if 0%{?fedora} +Requires: %{name}%{_isa} = %{epoch}:%{version}-%{release} +Requires: libpaper-devel +%endif +Requires: fontconfig-devel, freetype-devel +Requires: libpng-devel +Summary: Development files for xpdf libraries + +%description devel +Development files for xpdf libraries. + +%package libs +Summary: Libraries from xpdf + +%description libs +Libraries from xpdf. + %prep +%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' +%if 0%{?fedora} %setup -q -a 3 -a 4 -a 5 -a 6 -a 7 -a 8 -a 12 -a 13 -a 14 -a 15 -a 16 -%patch0 -p1 -%patch3 -p1 -b .ext -%patch6 -p1 -b .core -%patch7 -p1 -b .fonts -%patch9 -p1 -b .papersize -%patch11 -p1 -b .crash -%patch12 -p1 -b .alloc -%patch15 -p1 -%patch16 -p1 -b .fontlist -%patch19 -p1 -%patch20 -p1 -b .pdftopng -%patch21 -p1 -b .localized -%patch22 -p1 -b .fixpdftopng +%else +%setup -q +%endif +%patch -P3 -p1 -b .ext +%patch -P9 -p1 -b .papersize +%patch -P11 -p1 -b .crash +%patch -P12 -p1 -b .alloc +%patch -P25 -p1 -b .versionedlib +%patch -P26 -p1 -b .urw-font-fix +%patch -P28 -p1 -b .GlobalParams-null-fix +%patch -P29 -p1 -b .shared-xpdf-lib # security patches +%patch -P101 -p1 -b .CVE-2019-12360 +# %%patch -P102 -p1 -b .CVE-2024-4141 # debian patches -%patch200 -p1 -b .permissions -%patch201 -p1 -b .accelerators -%patch203 -p1 -b .64bit-stream +%patch -P200 -p1 -b .permissions +%patch -P203 -p1 -b .64bit-stream + +# Comment out unused urlCommand option +sed -i 's|urlCommand|#urlCommand|g' doc/sample-xpdfrc %build find -name "*orig" | xargs rm -f +%if 0%{?fedora} # This may seem pointless, but in the unlikely event that _sysconfdir != /etc ... for file in doc/*.1 doc/*.5 xpdf-*/README; do sed -i -e 's:/etc/xpdfrc:%{_sysconfdir}/xpdfrc:g' $file @@ -119,21 +174,19 @@ for file in xpdf-*/README xpdf-*/add-to-xpdfrc; do sed -i -e 's:/usr/share/:%{_datadir}/:g' $file sed -i -e 's:/usr/local/share/:%{_datadir}/:g' $file done +%endif -%configure \ - --enable-multithreaded \ - --enable-wordlist \ - --with-x \ - --enable-opi \ - --with-appdef-dir=%{_datadir}/X11/app-defaults/ \ - --without-Xp-library \ - --with-freetype2-library=%{_libdir} \ - --with-freetype2-includes=%{_includedir}/freetype2 +export CFLAGS="%{optflags} -fPIC" +export CXXFLAGS="%{optflags} -Wno-deprecated -fPIC" +%cmake -DMULTITHREADED=ON -DOPI_SUPPORT=ON -DXPDFWIDGET_PRINTING=1 -DSYSTEM_XPDFRC="%{_sysconfdir}/xpdfrc" -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -make %{?_smp_mflags} -make xpdf %{?_smp_mflags} +%cmake_build +%if 0%{?fedora} +%cmake_build --target xpdf +%endif %install +%if 0%{?fedora} mkdir -p $RPM_BUILD_ROOT%{_datadir}/xpdf/arabic \ $RPM_BUILD_ROOT%{_datadir}/xpdf/chinese-simplified \ $RPM_BUILD_ROOT%{_datadir}/xpdf/chinese-traditional \ @@ -147,8 +200,27 @@ mkdir -p $RPM_BUILD_ROOT%{_datadir}/xpdf/arabic \ $RPM_BUILD_ROOT%{_datadir}/xpdf/turkish \ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps -make install DESTDIR=$RPM_BUILD_ROOT +%cmake_install +%endif +# Y U NO INSTALL LIBS?!? +mkdir -p $RPM_BUILD_ROOT%{_libdir} +cp -a %{_vpath_builddir}/fofi/libfofi.so* $RPM_BUILD_ROOT%{_libdir} +cp -a %{_vpath_builddir}/goo/libgoo.so* $RPM_BUILD_ROOT%{_libdir} +cp -a %{_vpath_builddir}/splash/libsplash.so* $RPM_BUILD_ROOT%{_libdir} +cp -a %{_vpath_builddir}/xpdf/libxpdfcore.so* $RPM_BUILD_ROOT%{_libdir} + +# headers +mkdir -p $RPM_BUILD_ROOT%{_includedir}/xpdf/fofi +mkdir -p $RPM_BUILD_ROOT%{_includedir}/xpdf/goo +mkdir -p $RPM_BUILD_ROOT%{_includedir}/xpdf/splash +cp -a fofi/*.h $RPM_BUILD_ROOT%{_includedir}/xpdf/fofi/ +cp -a goo/*.h $RPM_BUILD_ROOT%{_includedir}/xpdf/goo/ +cp -a splash/*.h $RPM_BUILD_ROOT%{_includedir}/xpdf/splash/ +cp -a xpdf/*.h $RPM_BUILD_ROOT%{_includedir}/xpdf/ +cp -a %{__cmake_builddir}/aconf.h $RPM_BUILD_ROOT%{_includedir}/xpdf/ + +%if 0%{?fedora} mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications/ %if 0%{?rhel} > 5 || 0%{?fedora} desktop-file-install \ @@ -181,6 +253,7 @@ rm $RPM_BUILD_ROOT%{_bindir}/pdfdetach rm $RPM_BUILD_ROOT%{_bindir}/pdffonts rm $RPM_BUILD_ROOT%{_bindir}/pdfimages rm $RPM_BUILD_ROOT%{_bindir}/pdfinfo +rm $RPM_BUILD_ROOT%{_bindir}/pdftohtml rm $RPM_BUILD_ROOT%{_bindir}/pdftops rm $RPM_BUILD_ROOT%{_bindir}/pdftotext %if 0%{?rhel} > 5 || 0%{?fedora} > 6 @@ -193,6 +266,7 @@ rm $RPM_BUILD_ROOT%{_mandir}/man1/pdfdetach.1* rm $RPM_BUILD_ROOT%{_mandir}/man1/pdffonts.1* rm $RPM_BUILD_ROOT%{_mandir}/man1/pdfimages.1* rm $RPM_BUILD_ROOT%{_mandir}/man1/pdfinfo.1* +rm $RPM_BUILD_ROOT%{_mandir}/man1/pdftohtml.1* rm $RPM_BUILD_ROOT%{_mandir}/man1/pdftops.1* rm $RPM_BUILD_ROOT%{_mandir}/man1/pdftotext.1* @@ -203,28 +277,20 @@ for i in arabic chinese-simplified chinese-traditional cyrillic greek hebrew jap done # xpdfrc cleanup +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/ +cp -a doc/sample-xpdfrc $RPM_BUILD_ROOT%{_sysconfdir}/xpdfrc sed -i -e 's:/usr/local/share/:%{_datadir}/:g' $RPM_BUILD_ROOT%{_sysconfdir}/xpdfrc +%endif -# CJK are already in the file -for i in arabic cyrillic greek hebrew latin2 thai turkish; do - echo "# $i" >> $RPM_BUILD_ROOT%{_sysconfdir}/xpdfrc - echo "include %{_sysconfdir}/xpdf/add-to-xpdfrc.$i" >> $RPM_BUILD_ROOT%{_sysconfdir}/xpdfrc -done - -%post -touch --no-create %{_datadir}/icons/hicolor || : -%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : -update-desktop-database &> /dev/null ||: - -%postun -touch --no-create %{_datadir}/icons/hicolor || : -%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : -update-desktop-database &> /dev/null ||: +%ldconfig_scriptlets +%if 0%{?fedora} %files +%license COPYING COPYING3 %doc CHANGES README README.* %{_bindir}/xpdf %{_bindir}/pdftopng +%{_libdir}/lib*.so.* %{_mandir}/man?/pdftopng* %{_mandir}/man?/xpdf* %if 0%{?rhel} > 5 || 0%{?fedora} > 6 @@ -267,8 +333,157 @@ update-desktop-database &> /dev/null ||: %lang(tr) %{_datadir}/xpdf/turkish %{_datadir}/xpdf/cyrillic %{_datadir}/xpdf/latin2 +%endif + +%files devel +%{_includedir}/xpdf/ +%{_libdir}/lib*.so + +%files libs +%{_libdir}/lib*.so.* %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 1:4.06-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Sat Jan 17 2026 Fedora Release Engineering - 1:4.06-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Tue Nov 18 2025 Tom Callaway - 1:4.06-1 +- update to 4.06 + +* Thu Jul 31 2025 Tom Callaway - 1:4.05-8 +- passing -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to fix FTBFS with CMake4 (bz2381643) + +* Fri Jul 25 2025 Fedora Release Engineering - 1:4.05-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jan 19 2025 Fedora Release Engineering - 1:4.05-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Jul 20 2024 Fedora Release Engineering - 1:4.05-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed May 29 2024 Tom Callaway - 4.05-4 +- apply fix for CVE-2024-4141, thanks to Petr Gajdos and Derek Noonburg + +* Fri Apr 5 2024 Peter Lemenkov - 4.05-3 +- Verify GPG signature + +* Thu Feb 29 2024 Tom Callaway - 4.05-2 +- update langpacks + +* Tue Feb 27 2024 Than Ngo - 4.05-1 +- fixed bz#2263444, update to 4.05 + +* Sat Jan 27 2024 Fedora Release Engineering - 1:4.04-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jul 22 2023 Fedora Release Engineering - 1:4.04-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Fri Jun 16 2023 Than Ngo - 1:4.04-9 +- added ELN/RHEL conditions + +* Fri Apr 28 2023 Tom Callaway 1:4.04-8 +- move libs to -libs subpackage to minimize dep footprint of texlive-pdftex (bz2188328) + +* Tue Feb 21 2023 Than Ngo - 4.04-7 +- migrated to SPDX license + +* Thu Feb 16 2023 Tom Callaway - 1:4.04-6 +- drop now unnecessary libpaper2 patch + +* Mon Jan 30 2023 Tom Callaway - 1:4.04-5 +- pull in all the headers +- apply null fix for default var in GlobalParams() +- make a libxpdfcore for texlive-base to use + +* Sat Jan 21 2023 Fedora Release Engineering - 1:4.04-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sun Jan 8 2023 Tom Callaway - 1:4.04-3 +- fix build with libpaper2, rebuild for it + +* Sat Jul 23 2022 Fedora Release Engineering - 1:4.04-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Apr 22 2022 Tom Callaway - 1:4.04-1 +- update to 4.04 + +* Sat Jan 22 2022 Fedora Release Engineering - 1:4.03-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 1:4.03-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Feb 2 2021 Tom Callaway - 1:4.03-1 +- update to 4.03 + +* Thu Jan 28 2021 Fedora Release Engineering - 1:4.02-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 1:4.02-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jun 26 2020 Tom Callaway - 1:4.02-4 +- generate and apply fix based on poppler fix for CVE-2019-12360 + +* Fri Jan 31 2020 Fedora Release Engineering - 1:4.02-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Dec 2 2019 Tom Callaway - 1:4.02-2 +- apply upstream fix for CVE-2019-17064 + +* Wed Oct 16 2019 Tom Callaway - 1:4.02-1 +- update to 4.02 + +* Sat Jul 27 2019 Fedora Release Engineering - 1:4.01-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 22 2019 Tom Callaway 1:4.01-1 +- update to 4.01 + +* Sun Feb 03 2019 Fedora Release Engineering - 1:4.00-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 1:4.00-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Apr 30 2018 Tom Callaway - 1:4.00-7 +- add Requires: qt5-qtsvg to ensure icons are shown + +* Fri Feb 09 2018 Fedora Release Engineering - 1:4.00-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Nov 27 2017 Tom Callaway - 1:4.00-5 +- enable printing support. I hate cmake. thanks to Henrique Martins. + +* Mon Nov 13 2017 Tom Callaway - 1:4.00-4 +- tell xpdf where to find the system copy of xpdfrc +- comment out unused urlCommand option from xpdfrc + +* Tue Nov 7 2017 Tom Callaway - 1:4.00-3 +- fix URW font handling (thanks to Yaakov Selkowitz) + +* Wed Aug 23 2017 Tom Callaway 1:4.00-2 +- fix macro typo + +* Wed Aug 16 2017 Tom Callaway 1:4.00-1 +- update to 4.00 + +* Thu Aug 03 2017 Fedora Release Engineering - 1:3.04-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1:3.04-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 1:3.04-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Feb 05 2016 Fedora Release Engineering - 1:3.04-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + * Mon Jul 27 2015 Tom Callaway - 1:3.04-11 - fix output resolution of png file output (thanks to Kevin Farshaw, bz1246666)