diff options
Diffstat (limited to 'Xtranslcl.c')
-rw-r--r-- | Xtranslcl.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Xtranslcl.c b/Xtranslcl.c index 8aa583f..6165d36 100644 --- a/Xtranslcl.c +++ b/Xtranslcl.c @@ -360,7 +360,10 @@ TRANS(PTSOpenClient)(XtransConnInfo ciptr, char *port) uid_t saved_euid; saved_euid = geteuid(); - setuid( getuid() ); /** sets the euid to the actual/real uid **/ + /** sets the euid to the actual/real uid **/ + if (setuid( getuid() ) == -1) { + exit(1); + } if( chown( slave, saved_euid, -1 ) < 0 ) { exit( 1 ); } @@ -369,7 +372,13 @@ TRANS(PTSOpenClient)(XtransConnInfo ciptr, char *port) } waitpid(saved_pid, &exitval, 0); - + if (WIFEXITED(exitval) && WEXITSTATUS(exitval) != 0) { + close(fd); + close(server); + PRMSG(1, "PTSOpenClient: cannot set the owner of %s\n", + slave, 0, 0); + return(-1); + } if (chmod(slave, 0666) < 0) { close(fd); close(server); |