summaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFObjectHandle.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-09-20 02:22:34 +0200
committerJay Berkenbilt <ejb@ql.org>2019-09-20 02:22:34 +0200
commit8b1e307741d52a0c401296eaf790b18f98d67b6a (patch)
treeffbb28e1d2da211e608255d5ecb1017a6f8ca12e /libqpdf/QPDFObjectHandle.cc
parent5ce287d6bb0b1755e36d2fd74aadec9fcc51f8b7 (diff)
downloadqpdf-8b1e307741d52a0c401296eaf790b18f98d67b6a.tar.zst
Warn for duplicated dictionary keys (fixes #345)
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r--libqpdf/QPDFObjectHandle.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc
index a6d07190..4ee25bc7 100644
--- a/libqpdf/QPDFObjectHandle.cc
+++ b/libqpdf/QPDFObjectHandle.cc
@@ -2135,7 +2135,18 @@ QPDFObjectHandle::parseInternal(PointerHolder<InputSource> input,
{
val = olist.at(++i);
}
- dict[key_obj.getName()] = val;
+ std::string key = key_obj.getName();
+ if (dict.count(key) > 0)
+ {
+ QTC::TC("qpdf", "QPDFObjectHandle duplicate dict key");
+ warn(context,
+ QPDFExc(
+ qpdf_e_damaged_pdf,
+ input->getName(), object_description, offset,
+ "dictionary has duplicated key " + key +
+ "; last occurrence overrides earlier ones"));
+ }
+ dict[key] = val;
}
object = newDictionary(dict);
setObjectDescriptionFromInput(