* login.c (main): Call setluid()
authorTom Yu <tlyu@mit.edu>
Thu, 21 Jan 1999 02:44:00 +0000 (02:44 +0000)
committerTom Yu <tlyu@mit.edu>
Thu, 21 Jan 1999 02:44:00 +0000 (02:44 +0000)
* krshd.c (doit): Call setluid().

* configure.in: Check for setluid() rather than main() in
libsecurity.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11111 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/bsd/ChangeLog
src/appl/bsd/configure.in
src/appl/bsd/krshd.c
src/appl/bsd/login.c

index 9ea3553affbadbe23dbb45e73c56ebd74190750a..fdea771fd4b1974c767e60f86a3572cc40ab44e5 100644 (file)
@@ -1,3 +1,12 @@
+Wed Jan 20 21:42:41 1999  Tom Yu  <tlyu@mit.edu>
+
+       * login.c (main): Call setluid().
+
+       * krshd.c (doit): Call setluid().
+
+       * configure.in: Check for setluid() rather than main() in
+       libsecurity.
+
 1998-11-28  Sam Hartman  <hartmans@mesas.com>
 
        * krshd.c krsh.c:  Use RCMD_BUFSIZ not RSH_BUFSIZE [krb5-appl/678]
index e9895225a5316b4d91907a8e9111e38ab3ba18da..15db24fe6d0ceeb1e2116163bc340bb1c5932b5d 100644 (file)
@@ -30,7 +30,7 @@ case $krb5_cv_host in
 krb5_cv_has_streams=no
 ;;
 alpha-dec-osf*)
-       AC_CHECK_LIB(security,main,
+       AC_CHECK_LIB(security,setluid,
                AC_DEFINE(HAVE_SETLUID)
                LOGINLIBS="$LOGINLIBS -lsecurity"
        )
index e8a1b11c81d3ca01e3d6d0d4e9da0430df152906..7e0555f0040656385a472c712a9e0b819b262cdd 100644 (file)
@@ -1311,6 +1311,13 @@ if(port)
         initgroups(pwd->pw_name, pwd->pw_gid);
     }
 #endif
+#ifdef HAVE_SETLUID
+    /*
+     * If we're on a system which keeps track of login uids, then
+     * set the login uid. 
+     */
+    setluid((uid_t) pwd->pw_uid);
+#endif /* HAVE_SETLUID */
     (void) setuid((uid_t)pwd->pw_uid);
     /* if TZ is set in the parent, drag it in */
     {
index 6c651b00652dada15b2a6700aae12b5099f828c1..97a230d013021b90d6ddf773309f932d2e1e2a1f 100644 (file)
@@ -1604,14 +1604,15 @@ int main(argc, argv)
 #endif
 
 #ifdef HAVE_SETLUID
-    /*
-     * If we're on a system which keeps track of login uids, then
-     * attempt to set the login uid, but don't get too unhappy when/if
-     * it doesn't succeed.
-     */
-    if ((uid_t) getluid() < (uid_t) 0) {
-       setluid((uid_t) pwd->pw_uid);
-    }
+       /*
+        * If we're on a system which keeps track of login uids, then
+        * set the login uid. If this fails this opens up a problem on DEC OSF
+        * with C2 enabled.
+        */
+       if (setluid((uid_t) pwd->pw_uid) < 0) {
+           perror("setuid");
+           sleepexit(1);
+       }
 #endif /* HAVE_SETLUID */
 #ifdef _IBMR2
     setuidx(ID_LOGIN, pwd->pw_uid);