diff options
Diffstat (limited to 'src/utils/langs.cpp')
-rw-r--r-- | src/utils/langs.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/utils/langs.cpp b/src/utils/langs.cpp index 6e0390494..7c514ac9c 100644 --- a/src/utils/langs.cpp +++ b/src/utils/langs.cpp @@ -24,18 +24,29 @@ #include "debug.h" +static char *getLangName() +{ + const char *const lang = getenv("LANG"); + if (lang && strlen(lang) > 1000) + return nullptr; + return lang; +} + LangVect getLang() { LangVect langs; - std::string lang = config.getStringValue("lang").c_str(); if (lang.empty()) { - const char *const lng = getenv("LANG"); + const char *const lng = getLangName(); if (!lng) return langs; lang = lng; } + else if (lang.size() > 1000) + { + return langs; + } size_t dot = lang.find("."); if (dot != std::string::npos) @@ -52,11 +63,15 @@ std::string getLangSimple() const std::string lang = config.getStringValue("lang").c_str(); if (lang.empty()) { - const char *const lng = getenv("LANG"); + const char *const lng = getLangName(); if (!lng) return ""; return lng; } + else if (lang.size() > 1000) + { + return ""; + } return lang; } @@ -65,11 +80,15 @@ std::string getLangShort() std::string lang = config.getStringValue("lang").c_str(); if (lang.empty()) { - const char *const lng = getenv("LANG"); + const char *const lng = getLangName(); if (!lng) return ""; lang = lng; } + else if (lang.size() > 1000) + { + return ""; + } size_t dot = lang.find("."); if (dot != std::string::npos) |