aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxSlendiX <gamingxslendix@gmail.com>2021-09-08 18:10:32 +0300
committerxSlendiX <gamingxslendix@gmail.com>2021-09-08 18:10:32 +0300
commit3d3d237c2791899a4b19d72ebc286216442f9fd9 (patch)
treedd515667b75895bb2f87287623a841243d45a7b1
parentb00b3d7f5e2c68562a3250ec1f4f6ea0ebf9b73e (diff)
Add enviroment variables
-rw-r--r--sus.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sus.c b/sus.c
index 59678ee..df3512c 100644
--- a/sus.c
+++ b/sus.c
@@ -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;