From 3f2ebf334b2d42b84243da589fe41df0e28cc2e8 Mon Sep 17 00:00:00 2001 From: m-holger Date: Tue, 4 Apr 2023 15:54:54 +0100 Subject: [PATCH] Fix bug in QPDF_Name::normalizeName introduced in #891 '#' was omitted from the list of chars that need to be escaped. --- libqpdf/QPDF_Name.cc | 6 +++--- qpdf/qtest/qpdf/pound-in-name.pdf | 1 + qpdf/qtest/qpdf/pound-in-name.qdf | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libqpdf/QPDF_Name.cc b/libqpdf/QPDF_Name.cc index 3241ec1c..2fa697cf 100644 --- a/libqpdf/QPDF_Name.cc +++ b/libqpdf/QPDF_Name.cc @@ -38,9 +38,9 @@ QPDF_Name::normalizeName(std::string const& name) // invalid #. result += "#"; } else if ( - ch < 33 || ch == '/' || ch == '(' || ch == ')' || ch == '{' || - ch == '}' || ch == '<' || ch == '>' || ch == '[' || ch == ']' || - ch == '%' || ch > 126) { + ch < 33 || ch == '#' || ch == '/' || ch == '(' || ch == ')' || + ch == '{' || ch == '}' || ch == '<' || ch == '>' || ch == '[' || + ch == ']' || ch == '%' || ch > 126) { result += QUtil::hex_encode_char(ch); } else { result += ch; diff --git a/qpdf/qtest/qpdf/pound-in-name.pdf b/qpdf/qtest/qpdf/pound-in-name.pdf index c19dfb24..dcaa4d44 100644 --- a/qpdf/qtest/qpdf/pound-in-name.pdf +++ b/qpdf/qtest/qpdf/pound-in-name.pdf @@ -81,6 +81,7 @@ trailer << /a#b [ 4 /##00## /Som#ething ] /Som#ething (else) >> + /#20#23#2f#28#29#7b#7d#3c#3e#5b#5d#25#21#7e#7f 42 >> startxref diff --git a/qpdf/qtest/qpdf/pound-in-name.qdf b/qpdf/qtest/qpdf/pound-in-name.qdf index e6ecf5ab..67f57382 100644 --- a/qpdf/qtest/qpdf/pound-in-name.qdf +++ b/qpdf/qtest/qpdf/pound-in-name.qdf @@ -92,6 +92,7 @@ xref 0000000629 00000 n 0000000774 00000 n trailer << + /#20#23#2f#28#29#7b#7d#3c#3e#5b#5d#25!~#7f 42 /Other#20Tests << /## 1 /#20# 2