]> andersk Git - moira.git/commitdiff
Get username from Kerberos ticket file instead of utmp, since utmp
authordanw <danw>
Thu, 26 Mar 1998 21:07:13 +0000 (21:07 +0000)
committerdanw <danw>
Thu, 26 Mar 1998 21:07:13 +0000 (21:07 +0000)
loses sometimes. Fixes [1151] in Moira.

clients/mailmaint/mailmaint.c
clients/moira/main.c
clients/passwd/chpobox.c

index 1298ca62f01a48e38252e9b19dc6bbea2272ea20..554b1a1c3a52bbc49e7de32504851b54635cdf58 100644 (file)
@@ -21,6 +21,8 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <krb.h>
+
 RCSID("$Header$");
 
 #define STARTCOL 0
@@ -104,8 +106,8 @@ void menu_err_hook(const char *who, long code, const char *fmt, va_list args);
 int main(int argc, char *argv[])
 {
   void (*old_hook)(const char *, long, const char *, va_list);
-  int use_menu = 1;
-  char buf[BUFSIZ], *motd;
+  int use_menu = 1, k_errno;
+  char buf[BUFSIZ], pname[ANAME_SZ], *motd;
 
   if ((whoami = strrchr(argv[0], '/')) == NULL)
     whoami = argv[0];
@@ -125,9 +127,15 @@ int main(int argc, char *argv[])
       current_li->modby = NULL;
       current_li->modwith = NULL;
     }
-  if (!(username = getlogin()))
-    username = getpwuid(getuid())->pw_name;
-  username = username ? strdup(username) : "";
+
+  if ((k_errno = tf_init(TKT_FILE, R_TKT_FIL)) ||
+      (k_errno = tf_get_pname(pname)))
+    {
+      com_err(whoami, k_errno, "reading Kerberos ticket file");
+      exit(1);
+    }
+  tf_close();
+  username = pname;
 
   printf("Connecting to database for %s...please hold on.\n", username);
 
index 12dfdf7282c6502832a706d0d7580ff28c142ce9..f55018b3fee73f7ae69872f20858a5d5046d2435 100644 (file)
@@ -24,6 +24,8 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <krb.h>
+
 RCSID("$Header$");
 
 static void ErrorExit(char *buf, int status);
@@ -49,12 +51,17 @@ void main(int argc, char **argv)
 {
   int status;
   Menu *menu;
-  char *motd, **arg;
+  char *motd, **arg, pname[ANAME_SZ];
   struct sigaction act;
 
-  if (!(user = getlogin()))
-    user = getpwuid(getuid())->pw_name;
-  user = (user && strlen(user)) ? strdup(user) : "";
+  if ((status = tf_init(TKT_FILE, R_TKT_FIL)) ||
+      (status = tf_get_pname(pname)))
+    {
+      com_err(whoami, status, "reading Kerberos ticket file");
+      exit(1);
+    }
+  tf_close();
+  user = pname;
 
   if (!(program_name = strrchr(argv[0], '/')))
     program_name = argv[0];
index 265b0bd09a46349d53885026104839662831bd91..2fba6d1c0b0c2e70d72ece1aba5078dfc438ddf5 100644 (file)
@@ -29,6 +29,8 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <krb.h>
+
 RCSID("$Header$");
 
 int get_pobox(int argc, char **argv, void *callarg);
@@ -44,7 +46,7 @@ static int match;
 int main(int argc, char *argv[])
 {
   struct passwd *pwd;
-  char *mrarg[3], buf[BUFSIZ];
+  char *mrarg[3], buf[BUFSIZ], pname[ANAME_SZ];
   char *address, *uname, *machine, *motd;
   uid_t u;
   int c, setflag, prevpop, usageflag, status;
@@ -98,14 +100,14 @@ int main(int argc, char *argv[])
 
   if (!uname)
     {
-      if (!(uname = getlogin()))
-       usage();
-
-      if (uname[0] == '\0')
+      if ((status = tf_init(TKT_FILE, R_TKT_FIL)) ||
+         (status = tf_get_pname(pname)))
        {
-         pwd = getpwuid(u);
-         strcpy(uname, pwd->pw_name);
+         com_err(whoami, status, "reading Kerberos ticket file");
+         exit(1);
        }
+      tf_close();
+      uname = pname;
     }
   mrarg[0] = uname;
 
This page took 0.056681 seconds and 5 git commands to generate.