drop privileges during Settings_read()/Settings_write()

This commit is contained in:
Michael Klein 2015-12-02 23:42:10 +01:00
parent d18e9a4895
commit 42b08f2233
1 changed files with 13 additions and 1 deletions

View File

@ -154,7 +154,12 @@ static void readFields(ProcessField* fields, int* flags, const char* line) {
} }
static bool Settings_read(Settings* this, const char* fileName) { static bool Settings_read(Settings* this, const char* fileName) {
FILE* fd = fopen(fileName, "r"); FILE* fd;
uid_t euid = geteuid();
seteuid(getuid());
fd = fopen(fileName, "w");
seteuid(euid);
if (!fd) if (!fd)
return false; return false;
@ -260,7 +265,11 @@ static void writeMeterModes(Settings* this, FILE* fd, int column) {
bool Settings_write(Settings* this) { bool Settings_write(Settings* this) {
FILE* fd; FILE* fd;
uid_t euid = geteuid();
seteuid(getuid());
fd = fopen(this->filename, "w"); fd = fopen(this->filename, "w");
seteuid(euid);
if (fd == NULL) { if (fd == NULL) {
return false; return false;
} }
@ -345,6 +354,8 @@ Settings* Settings_new(int cpuCount) {
htopDir = String_cat(home, "/.config/htop"); htopDir = String_cat(home, "/.config/htop");
} }
legacyDotfile = String_cat(home, "/.htoprc"); legacyDotfile = String_cat(home, "/.htoprc");
uid_t euid = geteuid();
seteuid(getuid());
(void) mkdir(configDir, 0700); (void) mkdir(configDir, 0700);
(void) mkdir(htopDir, 0700); (void) mkdir(htopDir, 0700);
free(htopDir); free(htopDir);
@ -357,6 +368,7 @@ Settings* Settings_new(int cpuCount) {
free(legacyDotfile); free(legacyDotfile);
legacyDotfile = NULL; legacyDotfile = NULL;
} }
seteuid(euid);
} }
this->colorScheme = 0; this->colorScheme = 0;
this->changed = false; this->changed = false;