Toshaan Bharvani
3 years ago
commit
ad422912cf
5 changed files with 757 additions and 0 deletions
@ -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) |
@ -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$/); |
@ -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 <string.h> |
||||||
|
#include <memory.h> |
||||||
|
|
||||||
|
+#ifdef HAVE_GNUTLS |
||||||
|
+# include <gnutls/crypto.h> |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
#include <qpdf/QTC.hh> |
||||||
|
#include <qpdf/QUtil.hh> |
||||||
|
#include <qpdf/Pipeline.hh> |
||||||
|
@@ -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 <qpdf/qpdf-config.h> |
||||||
|
+ |
||||||
|
#include <qpdf/QPDF.hh> |
||||||
|
|
||||||
|
#include <qpdf/QPDFExc.hh> |
||||||
|
@@ -18,6 +20,10 @@ |
||||||
|
#include <assert.h> |
||||||
|
#include <string.h> |
||||||
|
|
||||||
|
+#ifdef HAVE_GNUTLS |
||||||
|
+# include <gnutls/crypto.h> |
||||||
|
+#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<gnutls_fips_mode_t>(oldmode), GNUTLS_FIPS140_SET_MODE_THREAD); |
||||||
|
+#endif |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
@@ -1240,6 +1256,12 @@ QPDF::decryptStream(PointerHolder<Encryp |
||||||
|
QPDFObjectHandle& stream_dict, |
||||||
|
std::vector<PointerHolder<Pipeline> >& 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<Encryp |
||||||
|
toI(key.length())); |
||||||
|
} |
||||||
|
heap.push_back(pipeline); |
||||||
|
+ |
||||||
|
+#ifdef HAVE_GNUTLS |
||||||
|
+ gnutls_fips140_set_mode(static_cast<gnutls_fips_mode_t>(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 <algorithm> |
||||||
|
#include <stdlib.h> |
||||||
|
|
||||||
|
+#ifdef HAVE_GNUTLS |
||||||
|
+#include <gnutls/crypto.h> |
||||||
|
+#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 |
@ -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. |
||||||
|
); |
@ -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 <mboddu@redhat.com> - 10.3.1-4 |
||||||
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags |
||||||
|
Related: rhbz#1991688 |
||||||
|
|
||||||
|
* Tue Apr 20 2021 Zdenek Dohnal <zdohnal@redhat.com> - 10.3.1-3 |
||||||
|
- 1950033 - Possible changes in zlib output causes FTBFS for qpdf |
||||||
|
|
||||||
|
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 10.3.1-2 |
||||||
|
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 |
||||||
|
|
||||||
|
* Fri Mar 12 2021 Zdenek Dohnal <zdohnal@redhat.com> - 10.3.1-1 |
||||||
|
- 1937988 - qpdf-10.3.1 is available |
||||||
|
|
||||||
|
* Thu Mar 11 2021 Zdenek Dohnal <zdohnal@redhat.com> - 10.3.0-1 |
||||||
|
- 1935799 - qpdf-10.3.0 is available |
||||||
|
|
||||||
|
* Wed Feb 24 2021 Zdenek Dohnal <zdohnal@redhat.com> - 10.2.0-1 |
||||||
|
- 1932052 - qpdf-10.2.0 is available |
||||||
|
|
||||||
|
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 10.1.0-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild |
||||||
|
|
||||||
|
* Mon Jan 11 2021 Zdenek Dohnal <zdohnal@redhat.com> - 10.1.0-1 |
||||||
|
- 1912951 - qpdf-10.1.0 is available |
||||||
|
|
||||||
|
* Mon Nov 23 2020 Zdenek Dohnal <zdohnal@redhat.com> - 10.0.4-1 |
||||||
|
- 1900262 - qpdf-10.0.4 is available |
||||||
|
|
||||||
|
* Thu Nov 05 2020 Zdenek Dohnal <zdohnal@redhat.com> - 10.0.3-2 |
||||||
|
- make is no longer in buildroot by default |
||||||
|
|
||||||
|
* Mon Nov 02 2020 Zdenek Dohnal <zdohnal@redhat.com> - 10.0.3-1 |
||||||
|
- 10.0.3 |
||||||
|
|
||||||
|
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 10.0.1-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild |
||||||
|
|
||||||
|
* Tue Apr 14 2020 Zdenek Dohnal <zdohnal@redhat.com> - 10.0.1-1 |
||||||
|
- 10.0.1 |
||||||
|
|
||||||
|
* Wed Mar 25 2020 Jitka Plesnikova <jplesnik@redhat.com> - 9.1.1-3 |
||||||
|
- Add all perl dependencies for tests |
||||||
|
|
||||||
|
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 9.1.1-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild |
||||||
|
|
||||||
|
* Mon Jan 27 2020 Zdenek Dohnal <zdohnal@redhat.com> - 9.1.1-1 |
||||||
|
- 9.1.1 |
||||||
|
|
||||||
|
* Tue Nov 19 2019 Zdenek Dohnal <zdohnal@redhat.com> - 9.1.0-1 |
||||||
|
- 9.1.0 |
||||||
|
|
||||||
|
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 8.4.2-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild |
||||||
|
|
||||||
|
* Fri May 31 2019 Zdenek Dohnal <zdohnal@redhat.com> - 8.4.2-1 |
||||||
|
- 8.4.2 |
||||||
|
|
||||||
|
* Mon Mar 25 2019 Zdenek Dohnal <zdohnal@redhat.com> - 8.4.0-1 |
||||||
|
- 8.4.0 |
||||||
|
|
||||||
|
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 8.3.0-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild |
||||||
|
|
||||||
|
* Mon Jan 14 2019 Zdenek Dohnal <zdohnal@redhat.com> - 8.3.0-1 |
||||||
|
- 8.3.0 |
||||||
|
|
||||||
|
* Mon Sep 24 2018 Zdenek Dohnal <zdohnal@redhat.com> - 8.2.1-1 |
||||||
|
- 8.2.1 |
||||||
|
|
||||||
|
* Tue Jul 24 2018 Zdenek Dohnal <zdohnal@redhat.com> - 8.1.0-4 |
||||||
|
- correcting license |
||||||
|
|
||||||
|
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 8.1.0-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed Jul 11 2018 Zdenek Dohnal <zdohnal@redhat.com> - 8.1.0-2 |
||||||
|
- ship license in correct tag, mention optional change of license |
||||||
|
|
||||||
|
* Mon Jun 25 2018 Zdenek Dohnal <zdohnal@redhat.com> - 8.1.0-1 |
||||||
|
- 8.1.0 |
||||||
|
- more tests fail because aarch64 zlib optimization - add patch for it |
||||||
|
|
||||||
|
* Fri May 25 2018 Zdenek Dohnal <zdohnal@redhat.com> - 8.0.2-3 |
||||||
|
- erase failing tests for aarch64 because of zlib optimization |
||||||
|
|
||||||
|
* Mon Apr 16 2018 Zdenek Dohnal <zdohnal@redhat.com> |
||||||
|
- CVE-2018-9918 qpdf: stack exhaustion in QPDFObjectHandle and QPDF_Dictionary classes in libqpdf.a [fedora-all] |
||||||
|
|
||||||
|
* Wed Mar 07 2018 Zdenek Dohnal <zdohnal@redhat.com> - 8.0.2-1 |
||||||
|
- 8.0.2 |
||||||
|
|
||||||
|
* Mon Mar 05 2018 Zdenek Dohnal <zdohnal@redhat.com> - 8.0.1-1 |
||||||
|
- 8.0.1 |
||||||
|
|
||||||
|
* Tue Feb 27 2018 Rex Dieter <rdieter@fedoraproject.org> - 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 <zdohnal@redhat.com> - 8.0.0-1 |
||||||
|
- rebase to 8.0.0 |
||||||
|
|
||||||
|
* Mon Feb 19 2018 Zdenek Dohnal <zdohnal@redhat.com> - 7.1.1-4 |
||||||
|
- gcc and gcc-c++ are no longer in buildroot by default |
||||||
|
|
||||||
|
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 7.1.1-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild |
||||||
|
|
||||||
|
* Thu Feb 08 2018 Zdenek Dohnal <zdohnal@redhat.com> - 7.1.1-2 |
||||||
|
- remove old stuff |
||||||
|
|
||||||
|
* Mon Feb 05 2018 Zdenek Dohnal <zdohnal@redhat.com> - 7.1.1-1 |
||||||
|
- rebase to 7.1.1 |
||||||
|
|
||||||
|
* Tue Sep 19 2017 Zdenek Dohnal <zdohnal@redhat.com> - 7.0.0-1 |
||||||
|
- rebase to 7.0.0 |
||||||
|
|
||||||
|
* Fri Aug 11 2017 Zdenek Dohnal <zdohnal@redhat.com> - 6.0.0-10 |
||||||
|
- adding patches for CVE back (cups-filters needed to rebuild) |
||||||
|
|
||||||
|
* Mon Aug 07 2017 Zdenek Dohnal <zdohnal@redhat.com> - 6.0.0-9 |
||||||
|
- removing patches for CVEs, because they break other things now |
||||||
|
|
||||||
|
* Thu Aug 03 2017 Zdenek Dohnal <zdohnal@redhat.com> - 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 <releng@fedoraproject.org> - 6.0.0-7 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild |
||||||
|
|
||||||
|
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 6.0.0-6 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild |
||||||
|
|
||||||
|
* Mon May 15 2017 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.0.0-5 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild |
||||||
|
|
||||||
|
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 6.0.0-4 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed Aug 03 2016 Jiri Popelka <jpopelka@redhat.com> - 6.0.0-3 |
||||||
|
- %%{_defaultdocdir}/qpdf/ -> %%{_pkgdocdir} |
||||||
|
|
||||||
|
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 6.0.0-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed Nov 11 2015 Jiri Popelka <jpopelka@redhat.com> - 6.0.0-1 |
||||||
|
- 6.0.0 |
||||||
|
|
||||||
|
* Mon Nov 09 2015 Jiri Popelka <jpopelka@redhat.com> - 5.2.0-1 |
||||||
|
- 5.2.0 |
||||||
|
|
||||||
|
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.3-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild |
||||||
|
|
||||||
|
* Mon May 25 2015 Jiri Popelka <jpopelka@redhat.com> - 5.1.3 |
||||||
|
- New upstream release 5.1.3 |
||||||
|
|
||||||
|
* Tue Apr 14 2015 Jiri Popelka <jpopelka@redhat.com> - 5.1.2-5 |
||||||
|
- rebuilt |
||||||
|
|
||||||
|
* Mon Feb 16 2015 Jiri Popelka <jpopelka@redhat.com> - 5.1.2-4 |
||||||
|
- rebuilt |
||||||
|
|
||||||
|
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.2-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild |
||||||
|
|
||||||
|
* Fri Aug 15 2014 Jiri Popelka <jpopelka@redhat.com> - 5.1.2-2 |
||||||
|
- Use %%_defaultdocdir instead of %%doc |
||||||
|
|
||||||
|
* Mon Jun 09 2014 Jiri Popelka <jpopelka@redhat.com> - 5.1.2-1 |
||||||
|
- 5.1.2 |
||||||
|
|
||||||
|
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.1-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed Jan 15 2014 Jiri Popelka <jpopelka@redhat.com> - 5.1.1-1 |
||||||
|
- 5.1.1 |
||||||
|
|
||||||
|
* Wed Dec 18 2013 Jiri Popelka <jpopelka@redhat.com> - 5.1.0-1 |
||||||
|
- 5.1.0 |
||||||
|
|
||||||
|
* Mon Oct 21 2013 Jiri Popelka <jpopelka@redhat.com> - 5.0.1-1 |
||||||
|
- 5.0.1 |
||||||
|
|
||||||
|
* Sat Aug 03 2013 Petr Pisar <ppisar@redhat.com> - 5.0.0-4 |
||||||
|
- Perl 5.18 rebuild |
||||||
|
|
||||||
|
* Mon Jul 22 2013 Jiri Popelka <jpopelka@redhat.com> - 5.0.0-3 |
||||||
|
- change shebang to absolute path (#987040) |
||||||
|
|
||||||
|
* Wed Jul 17 2013 Petr Pisar <ppisar@redhat.com> - 5.0.0-2 |
||||||
|
- Perl 5.18 rebuild |
||||||
|
|
||||||
|
* Thu Jul 11 2013 Jiri Popelka <jpopelka@redhat.com> - 5.0.0-1 |
||||||
|
- 5.0.0 |
||||||
|
|
||||||
|
* Mon Jul 08 2013 Jiri Popelka <jpopelka@redhat.com> - 4.2.0-1 |
||||||
|
- 4.2.0 |
||||||
|
|
||||||
|
* Thu May 23 2013 Jiri Popelka <jpopelka@redhat.com> - 4.1.0-3 |
||||||
|
- fix 'complete manual location' note in man pages (#966534) |
||||||
|
|
||||||
|
* Tue May 07 2013 Jiri Popelka <jpopelka@redhat.com> - 4.1.0-2 |
||||||
|
- some source files are under MIT license |
||||||
|
|
||||||
|
* Mon Apr 15 2013 Jiri Popelka <jpopelka@redhat.com> - 4.1.0-1 |
||||||
|
- 4.1.0 |
||||||
|
|
||||||
|
* Tue Mar 05 2013 Jiri Popelka <jpopelka@redhat.com> - 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 <rel-eng@lists.fedoraproject.org> - 4.0.1-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild |
||||||
|
|
||||||
|
* Fri Jan 18 2013 Jiri Popelka <jpopelka@redhat.com> 4.0.1-1 |
||||||
|
- 4.0.1 |
||||||
|
|
||||||
|
* Wed Jan 02 2013 Jiri Popelka <jpopelka@redhat.com> 4.0.0-1 |
||||||
|
- 4.0.0 |
||||||
|
|
||||||
|
* Fri Sep 07 2012 Jiri Popelka <jpopelka@redhat.com> 3.0.2-1 |
||||||
|
- 3.0.2 |
||||||
|
|
||||||
|
* Thu Aug 16 2012 Jiri Popelka <jpopelka@redhat.com> 3.0.1-3 |
||||||
|
- the previously added requirement doesn't need to be arch-specific |
||||||
|
|
||||||
|
* Thu Aug 16 2012 Jiri Popelka <jpopelka@redhat.com> 3.0.1-2 |
||||||
|
- doc subpackage requires libs subpackage due to license file (#848466) |
||||||
|
|
||||||
|
* Wed Aug 15 2012 Jiri Popelka <jpopelka@redhat.com> 3.0.1-1 |
||||||
|
- initial spec file |
Loading…
Reference in new issue