l10ntools/source/merge.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
New commits: commit 56c4445a8060d8ef6aec78f54ea28f4d7e5a8aa7 Author: Stephan Bergmann <sberg...@redhat.com> AuthorDate: Mon Feb 21 08:09:49 2022 +0100 Commit: Stephan Bergmann <sberg...@redhat.com> CommitDate: Mon Feb 21 09:23:40 2022 +0100 Fail Executable_ulfex upon duplicate keys in malformed input ...instead of causing use-after-free of pMergeEntrys, which would be destroyed during the (non-adding) emplace call but would still be used in the following if/else block (see the commit message of c6e2052b6f0d281fed334f8c803b1a6486d5b3bc "Update git submodules: Fix duplicate key typo") Change-Id: Iac8d67e61aba0144d3d5807f478c7b330d7c4c81 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130235 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sberg...@redhat.com> diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx index 004cffacc494..78334c70c8fe 100644 --- a/l10ntools/source/merge.cxx +++ b/l10ntools/source/merge.cxx @@ -21,7 +21,9 @@ #include <sal/log.hxx> #include <algorithm> +#include <cstdlib> #include <fstream> +#include <iostream> #include <string> #include <vector> @@ -298,7 +300,11 @@ void MergeDataFile::InsertEntry( if( !pMergeEntrys ) { pMergeEntrys = new MergeEntrys; - aMap.emplace( sKey, std::unique_ptr<MergeEntrys>(pMergeEntrys) ); + if (!aMap.emplace( sKey, std::unique_ptr<MergeEntrys>(pMergeEntrys) ).second) + { + std::cerr << "Duplicate entry " << sKey << "\n"; + std::exit(EXIT_FAILURE); + } }