summaryrefslogtreecommitdiff
path: root/Xtranslcl.c
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu.herrb@laas.fr>2006-06-20 19:11:16 +0000
committerMatthieu Herrb <matthieu.herrb@laas.fr>2006-06-20 19:11:16 +0000
commit8d37f63810fc12f113bfcf37065ac9da09702b46 (patch)
tree8f7211b75038b297df08e44a2ef61fd68e0a1773 /Xtranslcl.c
parentf9a47b508a89c647829266aacb19a0fc2dbb6158 (diff)
downloadxorg-lib-libxtrans-8d37f63810fc12f113bfcf37065ac9da09702b46.tar.gz
Check setuild() return value. Bugzilla #7116.xtrans-1_0_1
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);