[PATCH] permanently_set_uid fails on Cygwin :-(
Corinna Vinschen
vinschen at redhat.com
Wed Sep 17 00:53:09 EST 2003
Hi,
I'm terribly sorry that I missed this before 3.7p1 was out. The
permanently_set_uid() function fails on Cygwin since the test to
revert to the saved uid unfortunately works on Cygwin though it
shouldn't. The reason is that a Windows NT process always can
revert to its previous privileges. There's no such concept of
giving up rights in a process permanently. This is only possible
for a child process.
Corinna
Index: uidswap.c
===================================================================
RCS file: /cvs/openssh_cvs/uidswap.c,v
retrieving revision 1.39
diff -p -u -r1.39 uidswap.c
--- uidswap.c 6 Sep 2003 06:44:39 -0000 1.39
+++ uidswap.c 16 Sep 2003 14:47:54 -0000
@@ -191,10 +191,12 @@ permanently_set_uid(struct passwd *pw)
(u_int)pw->pw_gid);
}
+#ifdef HAVE_CYGWIN
/* Try restoration of UID if changed (test clearing of saved uid) */
if (old_uid != pw->pw_uid &&
(setuid(old_uid) != -1 || seteuid(old_uid) != -1))
fatal("%s: was able to restore old [e]uid", __func__);
+#endif
/* Verify UID drop was successful */
if (getuid() != pw->pw_uid || geteuid() != pw->pw_uid) {
--
Corinna Vinschen
Cygwin Developer
Red Hat, Inc.
More information about the openssh-unix-dev
mailing list