From 0709946c75ae6f2257d368714185bed7bee538ba Mon Sep 17 00:00:00 2001 From: DS Date: Thu, 12 Aug 2021 20:06:18 +0200 Subject: [PATCH] Fix a segfault caused by wrong textdomain lines in translation files (#11530) * The problem were lines like these: "# textdomain:" * str_split does not add an empty last part if there is a delimiter at the end, but this was probably assumed here. --- src/translation.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/translation.cpp b/src/translation.cpp index 55c958fa2..1e43b0894 100644 --- a/src/translation.cpp +++ b/src/translation.cpp @@ -64,7 +64,13 @@ void Translations::loadTranslation(const std::string &data) line.resize(line.length() - 1); if (str_starts_with(line, "# textdomain:")) { - textdomain = utf8_to_wide(trim(str_split(line, ':')[1])); + auto parts = str_split(line, ':'); + if (parts.size() < 2) { + errorstream << "Invalid textdomain translation line \"" << line + << "\"" << std::endl; + continue; + } + textdomain = utf8_to_wide(trim(parts[1])); } if (line.empty() || line[0] == '#') continue;