diff options
author | Jay Berkenbilt <ejb@ql.org> | 2019-09-20 02:22:34 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2019-09-20 02:22:34 +0200 |
commit | 8b1e307741d52a0c401296eaf790b18f98d67b6a (patch) | |
tree | ffbb28e1d2da211e608255d5ecb1017a6f8ca12e /libqpdf | |
parent | 5ce287d6bb0b1755e36d2fd74aadec9fcc51f8b7 (diff) | |
download | qpdf-8b1e307741d52a0c401296eaf790b18f98d67b6a.tar.zst |
Warn for duplicated dictionary keys (fixes #345)
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 13 |
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( |