commit ad422912cf42a8e635bc9c31e7d3a78479ee7172 Author: Toshaan Bharvani Date: Sun May 15 14:55:56 2022 +0200 qpdf package initial creation Signed-off-by: Toshaan Bharvani diff --git a/SOURCES/qpdf-doc.patch b/SOURCES/qpdf-doc.patch new file mode 100644 index 0000000..5227358 --- /dev/null +++ b/SOURCES/qpdf-doc.patch @@ -0,0 +1,30 @@ +diff -up qpdf-8.2.1/manual/fix-qdf.1.in.doc qpdf-8.2.1/manual/fix-qdf.1.in +--- qpdf-8.2.1/manual/fix-qdf.1.in.doc 2018-08-18 16:56:19.000000000 +0200 ++++ qpdf-8.2.1/manual/fix-qdf.1.in 2018-09-24 14:24:26.340341484 +0200 +@@ -14,5 +14,4 @@ the same file with stream lengths, cross + object stream offset tables regenerated. + .PP + For details about fix-qdf and about PDF files in QDF mode, please see +-the qpdf manual, which can be found in @docdir@/qpdf-manual.html or +-@docdir@/qpdf-manual.pdf. ++the qpdf manual, which can be found in qpdf-doc package. +diff -up qpdf-8.2.1/manual/qpdf.1.in.doc qpdf-8.2.1/manual/qpdf.1.in +--- qpdf-8.2.1/manual/qpdf.1.in.doc 2018-09-24 14:24:26.340341484 +0200 ++++ qpdf-8.2.1/manual/qpdf.1.in 2018-09-24 14:26:18.171462618 +0200 +@@ -16,4 +16,4 @@ useful primarily to PDF developers. + .PP + For a summary of qpdf's options, please run + \fBqpdf \-\-help\fR. A complete manual can be found in +-@docdir@/qpdf-manual.html or @docdir@/qpdf-manual.pdf. ++qpdf-doc package. +diff -up qpdf-8.2.1/manual/zlib-flate.1.in.doc qpdf-8.2.1/manual/zlib-flate.1.in +--- qpdf-8.2.1/manual/zlib-flate.1.in.doc 2018-08-18 16:56:19.000000000 +0200 ++++ qpdf-8.2.1/manual/zlib-flate.1.in 2018-09-24 14:24:26.340341484 +0200 +@@ -21,6 +21,6 @@ This program should not be used as a gen + tool. Use something like gzip(1) instead. + .PP + For details about qpdf, please see the qpdf manual, which can be found +-in @docdir@/qpdf-manual.html or @docdir@/qpdf-manual.pdf. ++in qpdf-doc package. + .SH "SEE ALSO" + qpdf(1), gzip(1) diff --git a/SOURCES/qpdf-erase-tests-with-generated-object-stream.patch b/SOURCES/qpdf-erase-tests-with-generated-object-stream.patch new file mode 100644 index 0000000..62a06f1 --- /dev/null +++ b/SOURCES/qpdf-erase-tests-with-generated-object-stream.patch @@ -0,0 +1,147 @@ +diff -up qpdf-10.2.0/examples/qtest/filter-tokens.test.erase-tests-with-generated-object-stream qpdf-10.2.0/examples/qtest/filter-tokens.test +--- qpdf-10.2.0/examples/qtest/filter-tokens.test.erase-tests-with-generated-object-stream 2021-02-24 12:45:32.347357149 +0100 ++++ qpdf-10.2.0/examples/qtest/filter-tokens.test 2021-02-24 12:47:01.379611993 +0100 +@@ -15,13 +15,9 @@ $td->runtest("filter tokens", + {$td->COMMAND => "pdf-filter-tokens in.pdf a.pdf"}, + {$td->STRING => "", $td->EXIT_STATUS => 0}); + +-$td->runtest("check output", +- {$td->FILE => "a.pdf"}, +- {$td->FILE => "out.pdf"}); +- + cleanup(); + +-$td->report(2); ++$td->report(1); + + sub cleanup + { +diff -up qpdf-10.2.0/examples/qtest/invert-images.test.erase-tests-with-generated-object-stream qpdf-10.2.0/examples/qtest/invert-images.test +--- qpdf-10.2.0/examples/qtest/invert-images.test.erase-tests-with-generated-object-stream 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/examples/qtest/invert-images.test 2021-02-24 12:45:32.347357149 +0100 +@@ -19,13 +19,13 @@ $td->runtest("invert images", + $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); + +-$td->runtest("check output", +- {$td->FILE => "a.pdf"}, +- {$td->FILE => "out.pdf"}); ++#$td->runtest("check output", ++# {$td->FILE => "a.pdf"}, ++# {$td->FILE => "out.pdf"}); + + cleanup(); + +-$td->report(2); ++$td->report(1); + + sub cleanup + { +diff -up qpdf-10.2.0/examples/qtest/set-form-values.test.erase-tests-with-generated-object-stream qpdf-10.2.0/examples/qtest/set-form-values.test +--- qpdf-10.2.0/examples/qtest/set-form-values.test.erase-tests-with-generated-object-stream 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/examples/qtest/set-form-values.test 2021-02-24 12:45:32.347357149 +0100 +@@ -14,13 +14,10 @@ cleanup(); + $td->runtest("set form values", + {$td->COMMAND => "pdf-set-form-values form-in.pdf a.pdf soup"}, + {$td->STRING => "", $td->EXIT_STATUS => 0}); +-$td->runtest("compare files", +- {$td->FILE => "a.pdf"}, +- {$td->FILE => "form-out.pdf"}); + + cleanup(); + +-$td->report(2); ++$td->report(1); + + sub cleanup + { +diff -up qpdf-10.2.0/libqpdf/qpdf-c.cc.erase-tests-with-generated-object-stream qpdf-10.2.0/libqpdf/qpdf-c.cc +--- qpdf-10.2.0/libqpdf/qpdf-c.cc.erase-tests-with-generated-object-stream 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/libqpdf/qpdf-c.cc 2021-02-24 12:45:32.348357141 +0100 +@@ -331,7 +331,6 @@ QPDF_ERROR_CODE qpdf_read_memory(qpdf_da + qpdf->size = size; + qpdf->password = password; + status = trap_errors(qpdf, &call_read_memory); +- QTC::TC("qpdf", "qpdf-c called qpdf_read_memory", status); + return status; + } + +@@ -542,7 +541,6 @@ unsigned char const* qpdf_get_buffer(qpd + + void qpdf_set_object_stream_mode(qpdf_data qpdf, qpdf_object_stream_e mode) + { +- QTC::TC("qpdf", "qpdf-c called qpdf_set_object_stream_mode"); + qpdf->qpdf_writer->setObjectStreamMode(mode); + } + +diff -up qpdf-10.2.0/libqpdf/QPDFWriter.cc.erase-tests-with-generated-object-stream qpdf-10.2.0/libqpdf/QPDFWriter.cc +--- qpdf-10.2.0/libqpdf/QPDFWriter.cc.erase-tests-with-generated-object-stream 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/libqpdf/QPDFWriter.cc 2021-02-24 12:45:32.348357141 +0100 +@@ -3445,8 +3445,6 @@ QPDFWriter::writeLinearized() + { + if (this->m->deterministic_id) + { +- QTC::TC("qpdf", "QPDFWriter linearized deterministic ID", +- need_xref_stream ? 0 : 1); + computeDeterministicIDData(); + pp_md5 = 0; + assert(this->m->md5_pipeline == 0); +@@ -3654,8 +3652,6 @@ QPDFWriter::writeStandard() + + if (this->m->deterministic_id) + { +- QTC::TC("qpdf", "QPDFWriter standard deterministic ID", +- this->m->object_stream_to_objects.empty() ? 0 : 1); + pp_md5 = 0; + assert(this->m->md5_pipeline == 0); + } +diff -up qpdf-10.2.0/qpdf/qpdf.testcov.erase-tests-with-generated-object-stream qpdf-10.2.0/qpdf/qpdf.testcov +--- qpdf-10.2.0/qpdf/qpdf.testcov.erase-tests-with-generated-object-stream 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/qpdf/qpdf.testcov 2021-02-24 12:45:32.348357141 +0100 +@@ -123,7 +123,6 @@ qpdf-c called qpdf_get_user_password 0 + qpdf-c called qpdf_is_linearized 0 + qpdf-c called qpdf_is_encrypted 0 + qpdf-c called qpdf_init_write 3 +-qpdf-c called qpdf_set_object_stream_mode 0 + qpdf-c called qpdf_set_stream_data_mode 0 + qpdf-c called qpdf_set_content_normalization 0 + qpdf-c called qpdf_set_qdf_mode 0 +@@ -177,7 +176,6 @@ QPDFObjectHandle append page contents 0 + QPDF_Stream getRawStreamData 0 + QPDF_Stream getStreamData 0 + QPDF_Stream expand filter abbreviation 0 +-qpdf-c called qpdf_read_memory 0 + QPDF stream without newline 0 + QPDF stream with CR only 0 + QPDF stream with CRNL 0 +@@ -260,8 +258,6 @@ qpdf pages range omitted at end 0 + qpdf pages range omitted in middle 0 + qpdf npages 0 + QPDF already reserved object 0 +-QPDFWriter standard deterministic ID 1 +-QPDFWriter linearized deterministic ID 1 + QPDFWriter deterministic with no data 0 + qpdf-c called qpdf_set_deterministic_ID 0 + QPDFObjectHandle indirect with 0 objid 0 +diff -up qpdf-10.2.0/qpdf/qtest/qpdf.test.erase-tests-with-generated-object-stream qpdf-10.2.0/qpdf/qtest/qpdf.test +--- qpdf-10.2.0/qpdf/qtest/qpdf.test.erase-tests-with-generated-object-stream 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/qpdf/qtest/qpdf.test 2021-02-24 12:45:32.349357133 +0100 +@@ -3254,7 +3254,6 @@ my @capi = ( + [3, 'normalized content'], + [4, 'ignore xref streams'], + [5, 'linearized'], +- [6, 'object streams'], + [7, 'qdf'], + [8, 'no original object ids'], + [9, 'uncompressed streams'], +@@ -3298,8 +3297,8 @@ $td->runtest("write damaged", + show_ntests(); + # ---------- + $td->notify("--- Deterministic ID Tests ---"); +-$n_tests += 11; +-foreach my $d ('nn', 'ny', 'yn', 'yy') ++$n_tests += 7; ++foreach my $d ('nn', 'yn') + { + my $linearize = ($d =~ m/^y/); + my $ostream = ($d =~ m/y$/); diff --git a/SOURCES/qpdf-relax.patch b/SOURCES/qpdf-relax.patch new file mode 100644 index 0000000..ae50652 --- /dev/null +++ b/SOURCES/qpdf-relax.patch @@ -0,0 +1,155 @@ +diff -up qpdf-10.2.0/libqpdf/QPDF.cc.relax qpdf-10.2.0/libqpdf/QPDF.cc +--- qpdf-10.2.0/libqpdf/QPDF.cc.relax 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/libqpdf/QPDF.cc 2021-02-24 12:35:50.715329461 +0100 +@@ -11,6 +11,10 @@ + #include + #include + ++#ifdef HAVE_GNUTLS ++# include ++#endif ++ + #include + #include + #include +@@ -261,7 +265,13 @@ QPDF::processFile(char const* filename, + { + FileInputSource* fi = new FileInputSource(); + fi->setFilename(filename); ++#ifdef HAVE_GNUTLS ++ GNUTLS_FIPS140_SET_LAX_MODE(); ++#endif + processInputSource(fi, password); ++#ifdef HAVE_GNUTLS ++ GNUTLS_FIPS140_SET_STRICT_MODE(); ++#endif + } + + void +@@ -270,7 +280,13 @@ QPDF::processFile(char const* descriptio + { + FileInputSource* fi = new FileInputSource(); + fi->setFile(description, filep, close_file); ++#ifdef HAVE_GNUTLS ++ GNUTLS_FIPS140_SET_LAX_MODE(); ++#endif + processInputSource(fi, password); ++#ifdef HAVE_GNUTLS ++ GNUTLS_FIPS140_SET_STRICT_MODE(); ++#endif + } + + void +diff -up qpdf-10.2.0/libqpdf/QPDF_encryption.cc.relax qpdf-10.2.0/libqpdf/QPDF_encryption.cc +--- qpdf-10.2.0/libqpdf/QPDF_encryption.cc.relax 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/libqpdf/QPDF_encryption.cc 2021-02-24 12:37:17.267561185 +0100 +@@ -1,6 +1,8 @@ + // This file implements methods from the QPDF class that involve + // encryption. + ++#include ++ + #include + + #include +@@ -18,6 +20,10 @@ + #include + #include + ++#ifdef HAVE_GNUTLS ++# include ++#endif ++ + static unsigned char const padding_string[] = { + 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, + 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, +@@ -1150,6 +1156,12 @@ QPDF::getKeyForObject( + void + QPDF::decryptString(std::string& str, int objid, int generation) + { ++#ifdef HAVE_GNUTLS ++ unsigned oldmode = gnutls_fips140_mode_enabled(); ++ ++ gnutls_fips140_set_mode(GNUTLS_FIPS140_LAX, GNUTLS_FIPS140_SET_MODE_THREAD); ++#endif ++ + if (objid == 0) + { + return; +@@ -1230,6 +1242,10 @@ QPDF::decryptString(std::string& str, in + QUtil::int_to_string(objid) + " " + + QUtil::int_to_string(generation) + ": " + e.what()); + } ++ ++#ifdef HAVE_GNUTLS ++ gnutls_fips140_set_mode(static_cast(oldmode), GNUTLS_FIPS140_SET_MODE_THREAD); ++#endif + } + + void +@@ -1240,6 +1256,12 @@ QPDF::decryptStream(PointerHolder >& heap) + { ++#ifdef HAVE_GNUTLS ++ unsigned oldmode = gnutls_fips140_mode_enabled(); ++ ++ gnutls_fips140_set_mode(GNUTLS_FIPS140_LAX, GNUTLS_FIPS140_SET_MODE_THREAD); ++#endif ++ + std::string type; + if (stream_dict.getKey("/Type").isName()) + { +@@ -1361,6 +1383,10 @@ QPDF::decryptStream(PointerHolder(oldmode), GNUTLS_FIPS140_SET_MODE_THREAD); ++#endif + } + + void +diff -up qpdf-10.2.0/libqpdf/QPDFWriter.cc.relax qpdf-10.2.0/libqpdf/QPDFWriter.cc +--- qpdf-10.2.0/libqpdf/QPDFWriter.cc.relax 2021-02-23 16:41:58.000000000 +0100 ++++ qpdf-10.2.0/libqpdf/QPDFWriter.cc 2021-02-24 12:35:50.716329452 +0100 +@@ -24,6 +24,10 @@ + #include + #include + ++#ifdef HAVE_GNUTLS ++#include ++#endif ++ + QPDFWriter::Members::Members(QPDF& pdf) : + pdf(pdf), + filename("unspecified"), +@@ -321,6 +325,13 @@ void + QPDFWriter::setDeterministicID(bool val) + { + this->m->deterministic_id = val; ++ ++#ifdef HAVE_GNUTLS ++ if (val) ++ GNUTLS_FIPS140_SET_LAX_MODE(); ++ else ++ GNUTLS_FIPS140_SET_STRICT_MODE(); ++#endif + } + + void +@@ -342,6 +353,13 @@ void + QPDFWriter::setPreserveEncryption(bool val) + { + this->m->preserve_encryption = val; ++ ++#ifdef HAVE_GNUTLS ++ if (val) ++ GNUTLS_FIPS140_SET_STRICT_MODE(); ++ else ++ GNUTLS_FIPS140_SET_LAX_MODE(); ++#endif + } + + void diff --git a/SOURCES/qpdf-s390x-disable-streamtest.patch b/SOURCES/qpdf-s390x-disable-streamtest.patch new file mode 100644 index 0000000..8a157c3 --- /dev/null +++ b/SOURCES/qpdf-s390x-disable-streamtest.patch @@ -0,0 +1,36 @@ +diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc +index fccefe0..2793191 100644 +--- a/libqpdf/QPDFWriter.cc ++++ b/libqpdf/QPDFWriter.cc +@@ -2096,7 +2096,6 @@ QPDFWriter::writeObjectStream(QPDFObjectHandle object) + // This condition occurred in a fuzz input. Ideally we + // should block it at at parse time, but it's not + // clear to me how to construct a case for this. +- QTC::TC("qpdf", "QPDFWriter stream in ostream"); + obj_to_write.warnIfPossible( + "stream found inside object stream; treating as null"); + obj_to_write = QPDFObjectHandle::newNull(); +diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov +index b4e7c46..3e935d0 100644 +--- a/qpdf/qpdf.testcov ++++ b/qpdf/qpdf.testcov +@@ -443,7 +443,6 @@ QPDF xref skipped space 0 + QPDF eof skipping spaces before xref 1 + QPDF_encryption user matches owner V < 5 0 + QPDF_encryption same password 1 +-QPDFWriter stream in ostream 0 + QPDFObjectHandle duplicate dict key 0 + QPDFWriter no encryption sig contents 0 + QPDFPageObjectHelper colorspace lookup 0 +diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test +index afb6668..b8f55a2 100644 +--- a/qpdf/qtest/qpdf.test ++++ b/qpdf/qtest/qpdf.test +@@ -996,7 +996,6 @@ my @bug_tests = ( + ["263", "empty xref stream", 2], + ["335a", "ozz-fuzz-12152", 2], + ["335b", "ozz-fuzz-14845", 2], +- ["fuzz-16214", "stream in object stream", 3], + # When adding to this list, consider adding to SEED_CORPUS_FILES + # in fuzz/build.mk and updating the count in fuzz/qtest/fuzz.test. + ); diff --git a/SPECS/qpdf.spec b/SPECS/qpdf.spec new file mode 100644 index 0000000..740c1f5 --- /dev/null +++ b/SPECS/qpdf.spec @@ -0,0 +1,389 @@ +Summary: Command-line tools and library for transforming PDF files +Name: qpdf +Version: 10.3.1 +Release: 4%{?dist} +# MIT: e.g. libqpdf/sha2.c +# upstream uses ASL 2.0 now, but he allowed other to distribute qpdf under +# old license (see README) +License: (Artistic 2.0 or ASL 2.0) and MIT +URL: http://qpdf.sourceforge.net/ +Source0: http://downloads.sourceforge.net/sourceforge/qpdf/qpdf-%{version}.tar.gz + +Patch0: qpdf-doc.patch +# zlib has optimalization for aarch64 now, which gives different output after +# compression - patch erases 3 tests with generated object stream which were failing +Patch1: qpdf-erase-tests-with-generated-object-stream.patch +# make qpdf working under FIPS, downstream patch +Patch2: qpdf-relax.patch +# 1950033 - Possible changes in zlib output causes FTBFS for qpdf +Patch3: qpdf-s390x-disable-streamtest.patch + +# gcc and gcc-c++ are no longer in buildroot by default +# gcc is needed for qpdf-ctest.c +BuildRequires: gcc +# gcc-c++ is need for everything except for qpdf-ctest +BuildRequires: gcc-c++ +# uses make +BuildRequires: make + +BuildRequires: zlib-devel +BuildRequires: libjpeg-turbo-devel +BuildRequires: pcre-devel + +# for gnutls crypto +BuildRequires: gnutls-devel + +# for fix-qdf and test suite +BuildRequires: perl-generators +BuildRequires: perl-interpreter +BuildRequires: perl(Carp) +BuildRequires: perl(Config) +BuildRequires: perl(constant) +BuildRequires: perl(Cwd) +BuildRequires: perl(Digest::MD5) +BuildRequires: perl(Digest::SHA) +BuildRequires: perl(File::Basename) +BuildRequires: perl(File::Copy) +BuildRequires: perl(File::Find) +BuildRequires: perl(File::Spec) +BuildRequires: perl(FileHandle) +BuildRequires: perl(IO::Handle) +BuildRequires: perl(IO::Select) +BuildRequires: perl(IO::Socket) +BuildRequires: perl(POSIX) +BuildRequires: perl(strict) +# perl(Term::ANSIColor) - not needed for tests +# perl(Term::ReadKey) - not needed for tests + +# for autoreconf +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%package libs +Summary: QPDF library for transforming PDF files + +%package devel +Summary: Development files for QPDF library +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%package doc +Summary: QPDF Manual +BuildArch: noarch +Requires: %{name}-libs = %{version}-%{release} + +%description +QPDF is a command-line program that does structural, content-preserving +transformations on PDF files. It could have been called something +like pdf-to-pdf. It includes support for merging and splitting PDFs +and to manipulate the list of pages in a PDF file. It is not a PDF viewer +or a program capable of converting PDF into other formats. + +%description libs +QPDF is a C++ library that inspect and manipulate the structure of PDF files. +It can encrypt and linearize files, expose the internals of a PDF file, +and do many other operations useful to PDF developers. + +%description devel +Header files and libraries necessary +for developing programs using the QPDF library. + +%description doc +QPDF Manual + +%prep +%setup -q + +# fix 'complete manual location' note in man pages +%patch0 -p1 -b .doc +%ifarch aarch64 +%patch1 -p1 -b .erase-tests-with-generated-object-stream +%endif +%patch2 -p1 -b .relax +%ifarch s390x +%patch3 -p1 -b .s390x-disable-streamtest +%endif + +%build +# work-around check-rpaths errors +autoreconf --verbose --force --install +# automake files needed to be regenerated in 8.4.0 - check if this can be removed +# in the next qpdf release +./autogen.sh + +%configure --disable-static \ + --enable-crypto-gnutls \ + --disable-implicit-crypto \ + --enable-show-failed-test-output + +%make_build + +%install +%make_install + +rm -f %{buildroot}%{_libdir}/libqpdf.la + +%check +make check + +%ldconfig_scriptlets libs + +%files +%{_bindir}/fix-qdf +%{_bindir}/qpdf +%{_bindir}/zlib-flate +%{_mandir}/man1/* + +%files libs +%doc README.md TODO ChangeLog +%license Artistic-2.0 +%{_libdir}/libqpdf.so.28 +%{_libdir}/libqpdf.so.28.3.1 + +%files devel +%doc examples/*.cc examples/*.c +%{_includedir}/qpdf/ +%{_libdir}/libqpdf.so +%{_libdir}/pkgconfig/libqpdf.pc + +%files doc +%{_pkgdocdir} + + +%changelog +* Tue Aug 10 2021 Mohan Boddu - 10.3.1-4 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Tue Apr 20 2021 Zdenek Dohnal - 10.3.1-3 +- 1950033 - Possible changes in zlib output causes FTBFS for qpdf + +* Fri Apr 16 2021 Mohan Boddu - 10.3.1-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Fri Mar 12 2021 Zdenek Dohnal - 10.3.1-1 +- 1937988 - qpdf-10.3.1 is available + +* Thu Mar 11 2021 Zdenek Dohnal - 10.3.0-1 +- 1935799 - qpdf-10.3.0 is available + +* Wed Feb 24 2021 Zdenek Dohnal - 10.2.0-1 +- 1932052 - qpdf-10.2.0 is available + +* Wed Jan 27 2021 Fedora Release Engineering - 10.1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jan 11 2021 Zdenek Dohnal - 10.1.0-1 +- 1912951 - qpdf-10.1.0 is available + +* Mon Nov 23 2020 Zdenek Dohnal - 10.0.4-1 +- 1900262 - qpdf-10.0.4 is available + +* Thu Nov 05 2020 Zdenek Dohnal - 10.0.3-2 +- make is no longer in buildroot by default + +* Mon Nov 02 2020 Zdenek Dohnal - 10.0.3-1 +- 10.0.3 + +* Wed Jul 29 2020 Fedora Release Engineering - 10.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Apr 14 2020 Zdenek Dohnal - 10.0.1-1 +- 10.0.1 + +* Wed Mar 25 2020 Jitka Plesnikova - 9.1.1-3 +- Add all perl dependencies for tests + +* Thu Jan 30 2020 Fedora Release Engineering - 9.1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Jan 27 2020 Zdenek Dohnal - 9.1.1-1 +- 9.1.1 + +* Tue Nov 19 2019 Zdenek Dohnal - 9.1.0-1 +- 9.1.0 + +* Fri Jul 26 2019 Fedora Release Engineering - 8.4.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri May 31 2019 Zdenek Dohnal - 8.4.2-1 +- 8.4.2 + +* Mon Mar 25 2019 Zdenek Dohnal - 8.4.0-1 +- 8.4.0 + +* Sat Feb 02 2019 Fedora Release Engineering - 8.3.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 14 2019 Zdenek Dohnal - 8.3.0-1 +- 8.3.0 + +* Mon Sep 24 2018 Zdenek Dohnal - 8.2.1-1 +- 8.2.1 + +* Tue Jul 24 2018 Zdenek Dohnal - 8.1.0-4 +- correcting license + +* Sat Jul 14 2018 Fedora Release Engineering - 8.1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Jul 11 2018 Zdenek Dohnal - 8.1.0-2 +- ship license in correct tag, mention optional change of license + +* Mon Jun 25 2018 Zdenek Dohnal - 8.1.0-1 +- 8.1.0 +- more tests fail because aarch64 zlib optimization - add patch for it + +* Fri May 25 2018 Zdenek Dohnal - 8.0.2-3 +- erase failing tests for aarch64 because of zlib optimization + +* Mon Apr 16 2018 Zdenek Dohnal +- CVE-2018-9918 qpdf: stack exhaustion in QPDFObjectHandle and QPDF_Dictionary classes in libqpdf.a [fedora-all] + +* Wed Mar 07 2018 Zdenek Dohnal - 8.0.2-1 +- 8.0.2 + +* Mon Mar 05 2018 Zdenek Dohnal - 8.0.1-1 +- 8.0.1 + +* Tue Feb 27 2018 Rex Dieter - 8.0.0-2 +- use %%license, %%ldconfig_scriptlets, %%make_build, %%make_install +- %%files: track files more closely, libqpdf soname in particular + +* Mon Feb 26 2018 Zdenek Dohnal - 8.0.0-1 +- rebase to 8.0.0 + +* Mon Feb 19 2018 Zdenek Dohnal - 7.1.1-4 +- gcc and gcc-c++ are no longer in buildroot by default + +* Fri Feb 09 2018 Fedora Release Engineering - 7.1.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Feb 08 2018 Zdenek Dohnal - 7.1.1-2 +- remove old stuff + +* Mon Feb 05 2018 Zdenek Dohnal - 7.1.1-1 +- rebase to 7.1.1 + +* Tue Sep 19 2017 Zdenek Dohnal - 7.0.0-1 +- rebase to 7.0.0 + +* Fri Aug 11 2017 Zdenek Dohnal - 6.0.0-10 +- adding patches for CVE back (cups-filters needed to rebuild) + +* Mon Aug 07 2017 Zdenek Dohnal - 6.0.0-9 +- removing patches for CVEs, because they break other things now + +* Thu Aug 03 2017 Zdenek Dohnal - 6.0.0-8 +- 1477213 - Detect recursions loop resolving objects +- 1454820 - CVE-2017-9208 +- 1454820 - CVE-2017-9209 +- 1454820 - CVE-2017-9210 + +* Thu Aug 03 2017 Fedora Release Engineering - 6.0.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 6.0.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 15 2017 Fedora Release Engineering - 6.0.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 6.0.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Aug 03 2016 Jiri Popelka - 6.0.0-3 +- %%{_defaultdocdir}/qpdf/ -> %%{_pkgdocdir} + +* Thu Feb 04 2016 Fedora Release Engineering - 6.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Nov 11 2015 Jiri Popelka - 6.0.0-1 +- 6.0.0 + +* Mon Nov 09 2015 Jiri Popelka - 5.2.0-1 +- 5.2.0 + +* Thu Jun 18 2015 Fedora Release Engineering - 5.1.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon May 25 2015 Jiri Popelka - 5.1.3 +- New upstream release 5.1.3 + +* Tue Apr 14 2015 Jiri Popelka - 5.1.2-5 +- rebuilt + +* Mon Feb 16 2015 Jiri Popelka - 5.1.2-4 +- rebuilt + +* Sun Aug 17 2014 Fedora Release Engineering - 5.1.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 15 2014 Jiri Popelka - 5.1.2-2 +- Use %%_defaultdocdir instead of %%doc + +* Mon Jun 09 2014 Jiri Popelka - 5.1.2-1 +- 5.1.2 + +* Sun Jun 08 2014 Fedora Release Engineering - 5.1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Jan 15 2014 Jiri Popelka - 5.1.1-1 +- 5.1.1 + +* Wed Dec 18 2013 Jiri Popelka - 5.1.0-1 +- 5.1.0 + +* Mon Oct 21 2013 Jiri Popelka - 5.0.1-1 +- 5.0.1 + +* Sat Aug 03 2013 Petr Pisar - 5.0.0-4 +- Perl 5.18 rebuild + +* Mon Jul 22 2013 Jiri Popelka - 5.0.0-3 +- change shebang to absolute path (#987040) + +* Wed Jul 17 2013 Petr Pisar - 5.0.0-2 +- Perl 5.18 rebuild + +* Thu Jul 11 2013 Jiri Popelka - 5.0.0-1 +- 5.0.0 + +* Mon Jul 08 2013 Jiri Popelka - 4.2.0-1 +- 4.2.0 + +* Thu May 23 2013 Jiri Popelka - 4.1.0-3 +- fix 'complete manual location' note in man pages (#966534) + +* Tue May 07 2013 Jiri Popelka - 4.1.0-2 +- some source files are under MIT license + +* Mon Apr 15 2013 Jiri Popelka - 4.1.0-1 +- 4.1.0 + +* Tue Mar 05 2013 Jiri Popelka - 4.0.1-3 +- work around gcc 4.8.0 issue on ppc64 (#915321) +- properly handle overridden compressed objects + +* Thu Feb 14 2013 Fedora Release Engineering - 4.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Fri Jan 18 2013 Jiri Popelka 4.0.1-1 +- 4.0.1 + +* Wed Jan 02 2013 Jiri Popelka 4.0.0-1 +- 4.0.0 + +* Fri Sep 07 2012 Jiri Popelka 3.0.2-1 +- 3.0.2 + +* Thu Aug 16 2012 Jiri Popelka 3.0.1-3 +- the previously added requirement doesn't need to be arch-specific + +* Thu Aug 16 2012 Jiri Popelka 3.0.1-2 +- doc subpackage requires libs subpackage due to license file (#848466) + +* Wed Aug 15 2012 Jiri Popelka 3.0.1-1 +- initial spec file