Make config and cookie files only readable/writable by current user

This commit is contained in:
Sude 2014-10-28 21:03:02 +02:00
parent bddde5b0da
commit cb2395b0ba
4 changed files with 30 additions and 0 deletions

View File

@ -16,6 +16,7 @@
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
#include <rhash.h> #include <rhash.h>
#include <boost/filesystem.hpp>
struct gameSpecificConfig struct gameSpecificConfig
{ {
@ -34,6 +35,7 @@ namespace Util
int getGameSpecificConfig(std::string gamename, gameSpecificConfig* conf, std::string directory = std::string()); int getGameSpecificConfig(std::string gamename, gameSpecificConfig* conf, std::string directory = std::string());
int replaceString(std::string& str, const std::string& to_replace, const std::string& replace_with); int replaceString(std::string& str, const std::string& to_replace, const std::string& replace_with);
void filepathReplaceReservedStrings(std::string& str, const std::string& gamename, const unsigned int& platformId = 0, const std::string& dlcname = ""); void filepathReplaceReservedStrings(std::string& str, const std::string& gamename, const unsigned int& platformId = 0, const std::string& dlcname = "");
void setFilePermissions(const boost::filesystem::path& path, const boost::filesystem::perms& permissions);
} }
#endif // UTIL_H #endif // UTIL_H

View File

@ -416,6 +416,10 @@ int main(int argc, char *argv[])
return 1; return 1;
} }
// Make sure that config file and cookie file are only readable/writable by owner
Util::setFilePermissions(config.sConfigFilePath, boost::filesystem::owner_read | boost::filesystem::owner_write);
Util::setFilePermissions(config.sCookiePath, boost::filesystem::owner_read | boost::filesystem::owner_write);
if (config.bSaveConfig || iLoginResult == 1) if (config.bSaveConfig || iLoginResult == 1)
{ {
if (iLoginResult == 1) if (iLoginResult == 1)
@ -472,6 +476,7 @@ int main(int argc, char *argv[])
} }
} }
ofs.close(); ofs.close();
Util::setFilePermissions(config.sConfigFilePath, boost::filesystem::owner_read | boost::filesystem::owner_write);
return 0; return 0;
} }
else else
@ -491,6 +496,7 @@ int main(int argc, char *argv[])
ofs << "secret = " << config.sSecret << std::endl; ofs << "secret = " << config.sSecret << std::endl;
} }
ofs.close(); ofs.close();
Util::setFilePermissions(config.sConfigFilePath, boost::filesystem::owner_read | boost::filesystem::owner_write);
return 0; return 0;
} }
else else

View File

@ -41,6 +41,8 @@ Downloader::~Downloader()
delete gogAPI; delete gogAPI;
curl_easy_cleanup(curlhandle); curl_easy_cleanup(curlhandle);
curl_global_cleanup(); curl_global_cleanup();
// Make sure that cookie file is only readable/writable by owner
Util::setFilePermissions(config.sCookiePath, boost::filesystem::owner_read | boost::filesystem::owner_write);
} }

View File

@ -314,3 +314,23 @@ void Util::filepathReplaceReservedStrings(std::string& str, const std::string& g
while (Util::replaceString(str, "%platform%", platform)); while (Util::replaceString(str, "%platform%", platform));
while (Util::replaceString(str, "//", "/")); // Replace any double slashes with single slash while (Util::replaceString(str, "//", "/")); // Replace any double slashes with single slash
} }
void Util::setFilePermissions(const boost::filesystem::path& path, const boost::filesystem::perms& permissions)
{
if (boost::filesystem::exists(path))
{
if (boost::filesystem::is_regular_file(path))
{
boost::filesystem::file_status s = boost::filesystem::status(path);
if (s.permissions() != permissions)
{
boost::system::error_code ec;
boost::filesystem::permissions(path, permissions, ec);
if (ec)
{
std::cout << "Failed to set file permissions for " << path.string() << std::endl;
}
}
}
}
}