forked from PsychoticNinja/irssi
Check setuid() and getuid() for errors
Thanks to Hector Marco for reporting. git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@5228 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
fa92c92797
commit
aaf4cc33db
@ -39,7 +39,9 @@
|
|||||||
#include "window-items.h"
|
#include "window-items.h"
|
||||||
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
GSList *processes;
|
GSList *processes;
|
||||||
static int signal_exec_input;
|
static int signal_exec_input;
|
||||||
@ -322,8 +324,13 @@ static void process_exec(PROCESS_REC *rec, const char *cmd)
|
|||||||
|
|
||||||
/* child process, try to clean up everything */
|
/* child process, try to clean up everything */
|
||||||
setsid();
|
setsid();
|
||||||
setuid(getuid());
|
|
||||||
setgid(getgid());
|
if (setuid(getuid()) != 0)
|
||||||
|
_exit(EXIT_FAILURE);
|
||||||
|
|
||||||
|
if (setgid(getgid()) != 0)
|
||||||
|
_exit(EXIT_FAILURE);
|
||||||
|
|
||||||
signal(SIGINT, SIG_IGN);
|
signal(SIGINT, SIG_IGN);
|
||||||
signal(SIGQUIT, SIG_DFL);
|
signal(SIGQUIT, SIG_DFL);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user