diff --git apps/s3dvt/main.c apps/s3dvt/main.c index 0842e22..9fd6d8e 100644 --- apps/s3dvt/main.c +++ apps/s3dvt/main.c @@ -166,8 +166,10 @@ static int pty_init_terminal(void) printf("Error opening tty\n"); return 0; } - setuid(uid); - setgid(gid); + if ( (setgid(getgid()) != 0) || (setuid(getuid()) != 0) ){ + printf(stderr, "Failed to drop privileges\n"); + exit(-1); + } if (setsid() < 0) printf("ERROR (setsid)\n"); /* tcflush(curpty, TCIOFLUSH); */ @@ -228,8 +230,10 @@ static int pipe_init_terminal(void) pid = fork(); if (pid == 0) { /* the child */ char tmpstr[1024]; - setuid(uid); - setgid(gid); + if ( (setgid(getgid()) != 0) || (setuid(getuid()) != 0) ){ + printf(stderr, "Failed to drop privileges\n"); + exit(-1); + } if (setsid() < 0) printf("ERROR (setsid)\n"); /* tcflush(curpty, TCIOFLUSH); */