Commit 1272a895b2e2f105b8389f3b26ed25683e6d766c
1 parent
2f5eefe9
Correct handling of setuid bit when using popen
Showing
1 changed file
with
6 additions
and
0 deletions
check_smart/check_smart.cpp
@@ -101,7 +101,13 @@ int main(int argc, char **argv) | @@ -101,7 +101,13 @@ int main(int argc, char **argv) | ||
101 | for(int i = 1; i < argc; i++) | 101 | for(int i = 1; i < argc; i++) |
102 | { | 102 | { |
103 | string output; | 103 | string output; |
104 | + int uid = getuid(); | ||
105 | + int gid = getgid(); | ||
106 | + setuid(0); | ||
107 | + setgid(0); | ||
104 | int rc = exec(command + argv[i],&output); | 108 | int rc = exec(command + argv[i],&output); |
109 | + setuid(uid); | ||
110 | + setgid(gid); | ||
105 | if(rc) | 111 | if(rc) |
106 | { | 112 | { |
107 | cout << "Error reading SMART data from disk" << endl; | 113 | cout << "Error reading SMART data from disk" << endl; |