git repos / blockattack-game

commit 68f32f61

sago007 · 2018-06-24 16:44
68f32f61d4eead6da901016a306807dc22a1a419 patch · browse files
parent d82fedb91634c2049e16aa3324659cfcdae9a7be

Backported some extra validation from PlatformFolders 4.0.0

Changed files

M source/code/sago/platform_folders.cpp before
diff --git a/source/code/sago/platform_folders.cpp b/source/code/sago/platform_folders.cpp index 34e6bae..f55e4ad 100644 --- a/source/code/sago/platform_folders.cpp +++ b/source/code/sago/platform_folders.cpp
@@ -236,14 +236,20 @@ static void PlatformFoldersAddFromFile(const std::string& filename, std::map<std
std::ifstream infile(filename.c_str());
std::string line;
while (std::getline(infile, line)) {
- if (line.length() == 0 || line.at(0) == '#') {
+ if (line.length() == 0 || line.at(0) == '#' || line.substr(0, 4) != "XDG_" || line.find("_DIR") == std::string::npos) {
+ continue;
+ }
+ try {
+ std::size_t splitPos = line.find('=');
+ std::string key = line.substr(0, splitPos);
+ std::size_t valueStart = line.find('"', splitPos);
+ std::size_t valueEnd = line.find('"', valueStart+1);
+ std::string value = line.substr(valueStart+1, valueEnd - valueStart - 1);
+ folders[key] = value;
+ } catch (std::exception& e) {
+ std::cerr << "WARNING: Failed to process \"" << line << "\" from \"" << filename << "\". Error: "<< e.what() << "\n";
continue;
}
- std::size_t splitPos = line.find("=");
- std::string key = line.substr(0, splitPos);
- std::string value = line.substr(splitPos+2, line.length()-splitPos-3);
- folders[key] = value;
- //std::cout << key << " : " << value << "\n";
}
}