summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Xtranslcl.c13
2 files changed, 16 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 538ed13..d814bb8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-06-20 Matthieu Herrb <matthieu.herrb@laas.fr>
+
+ * Xtranslcl.c
+ Check setuid() return value. Bugzilla #7116.
+
2006-05-25 Jeremy C. Reed <reed@reedmedia.net>
* Xtranssock.c:
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);