* in_tkt.c: Conditionalize use of macro do_seteuid, rather than
authorTom Yu <tlyu@mit.edu>
Tue, 6 Jan 1998 22:38:00 +0000 (22:38 +0000)
committerTom Yu <tlyu@mit.edu>
Tue, 6 Jan 1998 22:38:00 +0000 (22:38 +0000)
redefining setreuid.

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

src/lib/krb4/ChangeLog
src/lib/krb4/in_tkt.c

index 4e277046818f398229bb99216d3394bcf6262f80..04a3133600f134fdf53a92134cc2f416c7d63b4a 100644 (file)
@@ -1,3 +1,8 @@
+Tue Jan  6 17:11:28 1998  Tom Yu  <tlyu@mit.edu>
+
+       * in_tkt.c: Conditionalize use of macro do_seteuid, rather than
+       redefining setreuid. [krb5-libs/521]
+
 Sat Dec  6 22:17:28 1997  Ezra Peisach  <epeisach@mit.edu>
 
        * dest_tkt.c: Add <string.h> for memset prototype.
index bc5c2b31c73b7b4e5f3fc52afa23e0a984304542..ea17be8201541da6a6f0c0d8719afe2bd0d81cc2 100644 (file)
@@ -17,6 +17,9 @@
 #ifdef TKT_SHMEM
 #include <sys/param.h>
 #endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
 
 extern int krb_debug;
 
@@ -27,13 +30,17 @@ extern int krb_debug;
  * success, or KFAILURE if something goes wrong.
  */
 
-#ifndef HAVE_SETREUID
+#ifdef HAVE_SETEUID
+#define do_seteuid(e) seteuid((e))
+#else
 #ifdef HAVE_SETRESUID
-/* for hpux */
-#define setreuid(r,e) setresuid(r,e,-1)
+#define do_seteuid(e) setresuid(getuid(), (e), geteuid())
 #else
-/* for svr4 */
-#define setreuid(r,e) setuid(r)
+#ifdef HAVE_SETREUID
+#define do_seteuid(e) setreuid(geteuid(), (e))
+#else
+#define do_seteuid(e) (errno = EPERM, -1)
+#endif
 #endif
 #endif
 
@@ -98,10 +105,10 @@ in_tkt(pname,pinst)
        This isn't a security problem, since the ticket file, if it already
        exists, has the right uid (== ruid) and mode. */
     if (me != metoo) {
-       if (setreuid(metoo, me) < 0) {
+       if (do_seteuid(me) < 0) {
            /* can't switch??? barf! */
            if (krb_debug)
-               perror("in_tkt: setreuid");
+               perror("in_tkt: seteuid");
            return(KFAILURE);
        } else
            if (krb_debug)
@@ -118,10 +125,10 @@ in_tkt(pname,pinst)
     }
     umask(mask);
     if (me != metoo) {
-       if (setreuid(me, metoo) < 0) {
+       if (do_seteuid(metoo) < 0) {
            /* can't switch??? barf! */
            if (krb_debug)
-               perror("in_tkt: setreuid2");
+               perror("in_tkt: seteuid2");
            return(KFAILURE);
        } else
            if (krb_debug)