From 52c7195a8ee91f95ef134d9798a47ea313df16c8 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 11 Oct 2013 17:35:24 +0300 Subject: Second part of checks from Parasoft C++ Test. --- src/utils/langs.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'src/utils/langs.cpp') 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) -- cgit v1.2.3-60-g2f50