From: Jakub Izydorczyk Date: Tue, 3 Mar 2015 13:15:29 +0000 (+0100) Subject: Fix string buffer overwrite X-Git-Tag: accepted/tizen/3.0.2015.q1/common/20150320.110440~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F16%2F36216%2F2;p=platform%2Fcore%2Fappfw%2Fapp-installers.git Fix string buffer overwrite std::string uses static buffer for empty string values. When std::transform iterates over initialized std::string elements and copies their changed values to empty std::string by using its random access iterator, the buffer which is used by std::string for empty strings is overriden, what later makes all strings, that are supposed to be empty, not empty. Change-Id: I5acb9e038febabbf4b1e1d56d736f75dc227c0af --- diff --git a/src/widget-manifest-parser/manifest.cc b/src/widget-manifest-parser/manifest.cc index a28ae30..e401a5f 100644 --- a/src/widget-manifest-parser/manifest.cc +++ b/src/widget-manifest-parser/manifest.cc @@ -33,7 +33,10 @@ typedef std::list List; std::string GetLocalizedKey(const std::string& key, const std::string& local) { std::string lower_local; - std::transform(local.begin(), local.end(), lower_local.begin(), ::tolower); + std::transform(local.begin(), local.end(), + std::insert_iterator(lower_local, + lower_local.begin()), + ::tolower); if (lower_local.empty()) lower_local = kLocaleUnlocalized; return key + kPathConnectSymbol + lower_local;