From 56c4445a8060d8ef6aec78f54ea28f4d7e5a8aa7 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Mon, 21 Feb 2022 08:09:49 +0100 Subject: [PATCH] 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 --- l10ntools/source/merge.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 #include +#include #include +#include #include #include @@ -298,7 +300,11 @@ void MergeDataFile::InsertEntry( if( !pMergeEntrys ) { pMergeEntrys = new MergeEntrys; - aMap.emplace( sKey, std::unique_ptr(pMergeEntrys) ); + if (!aMap.emplace( sKey, std::unique_ptr(pMergeEntrys) ).second) + { + std::cerr << "Duplicate entry " << sKey << "\n"; + std::exit(EXIT_FAILURE); + } }