From e93381de07d47269e671a1e884248bd8e354dc24 Mon Sep 17 00:00:00 2001 From: m-holger Date: Thu, 27 Nov 2025 20:16:56 +0000 Subject: [PATCH] In `QPDFJob` add warning for exceeded configurable limits --- libqpdf/QPDFJob.cc | 6 ++++++ libqpdf/QPDFJob_json.cc | 2 +- qpdf/qtest/qpdf/global1.out | 1 + qpdf/qtest/qpdf/global2.out | 1 + qpdf/qtest/qpdf/global3.out | 1 + qpdf/qtest/qpdf/global4.out | 1 + qpdf/qtest/qpdf/issue-202.out | 1 + 7 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc index b9663c2..8820423 100644 --- a/libqpdf/QPDFJob.cc +++ b/libqpdf/QPDFJob.cc @@ -25,6 +25,7 @@ #include #include #include +#include #include // JOB_SCHEMA_DATA @@ -485,6 +486,11 @@ QPDFJob::writeQPDF(QPDF& pdf) *m->log->getWarn() << m->message_prefix << ": operation succeeded with warnings\n"; } } + if (!m->d_cfg.suppress_warnings() && global::Limits::errors()) { + *m->log->getWarn() << m->message_prefix + << ": some configurable limits were exceeded; for more details " + "see https://qpdf.readthedocs.io/en/stable/cli.html#global-limits\n"; + } if (m->report_mem_usage) { // Call get_max_memory_usage before generating output. When debugging, it's easier if print // statements from get_max_memory_usage are not interleaved with the output. diff --git a/libqpdf/QPDFJob_json.cc b/libqpdf/QPDFJob_json.cc index 8332ee0..c4dca6d 100644 --- a/libqpdf/QPDFJob_json.cc +++ b/libqpdf/QPDFJob_json.cc @@ -623,7 +623,7 @@ Handlers::beginSetPageLabelsArray(JSON) void Handlers::beginGlobal(JSON) { - this->c_global = c_main->global(); + c_global = c_main->global(); } void diff --git a/qpdf/qtest/qpdf/global1.out b/qpdf/qtest/qpdf/global1.out index 88f05cb..7de4e16 100644 --- a/qpdf/qtest/qpdf/global1.out +++ b/qpdf/qtest/qpdf/global1.out @@ -5,3 +5,4 @@ WARNING: global.pdf: Attempting to reconstruct cross-reference table WARNING: global.pdf (trailer, offset 759): limits error(parser-max-nesting): ignoring excessively deeply nested data structure WARNING: global.pdf: unable to find trailer dictionary while recovering damaged file qpdf: operation succeeded with warnings; resulting file may have some problems +qpdf: some configurable limits were exceeded; for more details see https://qpdf.readthedocs.io/en/stable/cli.html#global-limits diff --git a/qpdf/qtest/qpdf/global2.out b/qpdf/qtest/qpdf/global2.out index 6ba4e86..a2c7d37 100644 --- a/qpdf/qtest/qpdf/global2.out +++ b/qpdf/qtest/qpdf/global2.out @@ -6,3 +6,4 @@ WARNING: global_damaged.pdf (trailer, offset 767): unknown token while reading o WARNING: global_damaged.pdf (trailer, offset 767): limits error(parser-max-errors): too many errors during parsing; treating object as null WARNING: global_damaged.pdf: unable to find trailer dictionary while recovering damaged file qpdf: operation succeeded with warnings; resulting file may have some problems +qpdf: some configurable limits were exceeded; for more details see https://qpdf.readthedocs.io/en/stable/cli.html#global-limits diff --git a/qpdf/qtest/qpdf/global3.out b/qpdf/qtest/qpdf/global3.out index 703a2d8..32d8508 100644 --- a/qpdf/qtest/qpdf/global3.out +++ b/qpdf/qtest/qpdf/global3.out @@ -3,3 +3,4 @@ WARNING: global.pdf: file is damaged WARNING: global.pdf (offset 712): expected trailer dictionary WARNING: global.pdf: Attempting to reconstruct cross-reference table qpdf: operation succeeded with warnings; resulting file may have some problems +qpdf: some configurable limits were exceeded; for more details see https://qpdf.readthedocs.io/en/stable/cli.html#global-limits diff --git a/qpdf/qtest/qpdf/global4.out b/qpdf/qtest/qpdf/global4.out index 7d2d16d..d4741b5 100644 --- a/qpdf/qtest/qpdf/global4.out +++ b/qpdf/qtest/qpdf/global4.out @@ -7,3 +7,4 @@ WARNING: global_damaged.pdf (trailer, offset 770): unknown token while reading o WARNING: global_damaged.pdf (trailer, offset 788): limits error(parser-max-container-size-damaged): encountered errors while parsing an array or dictionary with more than 9 elements; giving up on reading object WARNING: global_damaged.pdf: unable to find trailer dictionary while recovering damaged file qpdf: operation succeeded with warnings; resulting file may have some problems +qpdf: some configurable limits were exceeded; for more details see https://qpdf.readthedocs.io/en/stable/cli.html#global-limits diff --git a/qpdf/qtest/qpdf/issue-202.out b/qpdf/qtest/qpdf/issue-202.out index 834743a..35b8c7a 100644 --- a/qpdf/qtest/qpdf/issue-202.out +++ b/qpdf/qtest/qpdf/issue-202.out @@ -7,3 +7,4 @@ WARNING: issue-202.pdf (object 222 0, offset 50101): dictionary has duplicated k WARNING: issue-202.pdf (object 222 0, offset 50101): dictionary has duplicated key /Producer; last occurrence overrides earlier ones WARNING: issue-202.pdf: unable to find trailer dictionary while recovering damaged file qpdf: operation succeeded with warnings; resulting file may have some problems +qpdf: some configurable limits were exceeded; for more details see https://qpdf.readthedocs.io/en/stable/cli.html#global-limits -- libgit2 0.21.4