diff options
author | xSlendiX <gamingxslendix@gmail.com> | 2021-09-08 18:10:32 +0300 |
---|---|---|
committer | xSlendiX <gamingxslendix@gmail.com> | 2021-09-08 18:10:32 +0300 |
commit | 3d3d237c2791899a4b19d72ebc286216442f9fd9 (patch) | |
tree | dd515667b75895bb2f87287623a841243d45a7b1 | |
parent | b00b3d7f5e2c68562a3250ec1f4f6ea0ebf9b73e (diff) |
Add enviroment variables
-rw-r--r-- | sus.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -42,6 +42,8 @@ struct termios old_terminal; void getln(int, char*, size_t); +struct passwd* pw; + void intHandler(int dummy) { tcsetattr(STDIN_FILENO, TCSANOW, &old_terminal); @@ -49,8 +51,11 @@ void intHandler(int dummy) exit(0); } -int main(int argc, char** argv) +int main(int argc, char** argv, char** envp) { + uid = getuid(); + pw = getpwuid(uid); + if (CheckIfInGroup("wheel") != 1) { puts("ERROR: Not in the wheel group."); return 0; @@ -130,12 +135,9 @@ int main(int argc, char** argv) sigaction(SIGTTIN, &sa, NULL); sigaction(SIGTTOU, &sa, NULL); + argv += command_start; setuid(uid); - char* path = getenv("PATH"); - char pathenv[strlen(path) + sizeof("PATH=")]; - sprintf(pathenv, "PATH=%s", path); - char* envp[] = { pathenv, NULL }; execvpe(argv[0], argv, envp); return 0; @@ -143,7 +145,6 @@ int main(int argc, char** argv) int GetUID(const char* username, uid_t* uid) { - struct passwd* pw; pw = getpwnam(username); if (pw != NULL) { *uid = pw->pw_uid; |