From eb22f0a2d87e9401629d87e27f6d962fd4ec6f6c Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Wed, 3 Dec 2014 23:36:53 +0100 Subject: [PATCH] Raise an error when parsing duplicate attributes/attachments. --- src/format/KeePass2XmlReader.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/format/KeePass2XmlReader.cpp b/src/format/KeePass2XmlReader.cpp index f3a7c8541..d1737d52a 100644 --- a/src/format/KeePass2XmlReader.cpp +++ b/src/format/KeePass2XmlReader.cpp @@ -825,7 +825,13 @@ void KeePass2XmlReader::parseEntryString(Entry* entry) } if (keySet && valueSet) { - entry->attributes()->set(key, value, protect); + // the default attributes are always there so additionally check if it's empty + if (entry->attributes()->hasKey(key) && !entry->attributes()->value(key).isEmpty()) { + raiseError("Duplicate custom attribute found"); + } + else { + entry->attributes()->set(key, value, protect); + } } else { raiseError("Entry string key or value missing"); @@ -874,7 +880,12 @@ QPair KeePass2XmlReader::parseEntryBinary(Entry* entry) } if (keySet && valueSet) { - entry->attachments()->set(key, value); + if (entry->attachments()->hasKey(key)) { + raiseError("Duplicate attachment found"); + } + else { + entry->attachments()->set(key, value); + } } else { raiseError("Entry binary key or value missing");