summaryrefslogtreecommitdiff
path: root/Xtranslcl.c
diff options
context:
space:
mode:
Diffstat (limited to 'Xtranslcl.c')
-rw-r--r--Xtranslcl.c13
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);