]> andersk Git - moira.git/commitdiff
fixed kerberos host and realm naming; uid buffer wrong in admin_call
authormar <mar>
Tue, 2 Aug 1988 21:14:29 +0000 (21:14 +0000)
committermar <mar>
Tue, 2 Aug 1988 21:14:29 +0000 (21:14 +0000)
reg_svr/reg_svr.c

index 5c3bf230fe232447ffc76dce8bf88f51258f03e1..483bcdb8714f6e70d8c406981fd78fa1754832fa 100644 (file)
  *      This program is a client of the SMS server and the Kerberos
  *      admin_server, and is a server for the userreg program.
  * 
- *      $Log$
- *      Revision 1.12  1988-08-02 16:44:58  qjb
- *      same
- *
- * Revision 1.11  88/08/02  01:41:38  qjb
- * Yet another almost finished version.  Ready for attack of kerberos problems
- * and testing.
- * 
- * Revision 1.10  88/08/01  18:17:58  qjb
- * Almost finished version supporting new SMS protocol.
- * Kerberos problems.
- * 
- * Revision 1.9  88/07/26  14:50:40  qjb
- * Added comments and did some cleaning up in preparation for rewrite.
- * This version will not run; the last version that will is 1.8.
- * 
- * Revision 1.8  88/07/20  15:39:25  mar
- * find realm at runtime; don't use hard-coded one
- * 
- * Revision 1.7  88/02/08  15:08:15  mar
- * Moved header file locations
- * 
- * Revision 1.6  87/09/21  15:19:11  wesommer
- * Allow numbers, _, and . as legal characters in the username.
- * 
- * Revision 1.5  87/09/10  22:18:32  wesommer
- * Clean up output format.
- * 
- * Revision 1.4  87/09/04  23:33:19  wesommer
- * Deleted test scaffolding (second oops.)
- * 
- * Revision 1.3  87/09/03  03:05:18  wesommer
- * Version used for userreg tests.
- * 
- * Revision 1.2  87/08/22  18:39:45  wesommer
- * User registration server.
- * 
- * Revision 1.1  87/07/31  15:48:13  wesommer
- * Initial revision
- * 
  */
 
 #ifndef lint
@@ -97,7 +57,6 @@ static char *rcsid_reg_svr_c = "$Header$";
 #define DEBUG
 /* This MUST be correct!  There isn't a good way of getting this without
    hardcoding that would not make testing impractical. */
-#define KRB_HOST "dodo"
 
 extern char *strdup();
 extern char *malloc();
@@ -135,6 +94,10 @@ struct msg
     struct db_data db;         /* Information from the SMS database */
 };
 
+static char krbhst[BUFSIZ];    /* kerberos server name */
+static char krbrealm[REALM_SZ];        /* kerberos realm name */
+
+
 main(argc,argv)
   int argc;
   char *argv[];
@@ -204,6 +167,24 @@ main(argc,argv)
        exit(1);
     }
 
+    if (status = get_krbrlm(krbrealm, 1)) {
+       status += krb_err_base;
+       com_err(whoami, status, " fetching kerberos realm");
+       exit(1);
+    }
+
+    if (status = get_krbhst(krbhst, krbrealm, 1)) {
+       status += krb_err_base;
+       com_err(whoami, status, " fetching kerberos hostname");
+       exit(1);
+    } else {
+       char *s;
+       for (s = krbhst; *s && *s != '.'; s++)
+           if (isupper(*s))
+               *s = tolower(*s);
+       *s = 0;
+    }
+
     /* Use com_err or output to stderr for all log messages. */    
 #ifdef DEBUG
     fprintf(stderr,"*** Debugging messages enabled. ***\n");
@@ -725,19 +706,14 @@ int verify_user(message,retval)
        
 int ureg_get_tkt()
 {
-    char realm[REALM_SZ];      /* Kerberos realm */
     int status = SUCCESS;      /* Return status */
 
     /* Get keys for interacting with Kerberos admin server. */
-    if ((status = get_krbrlm(realm, 1)) != KSUCCESS) 
+    /* principal, instance, realm, service, service instance, life, file */
+    if (status = get_svc_in_tkt("register", "sms", krbrealm, "changepw", 
+                               krbhst, 1, KEYFILE))
        status += krb_err_base;
 
-    if (status == SUCCESS)
-       /* principal, instance, realm, service, service instance, life, file */
-       if (status = get_svc_in_tkt("register", "sms", realm, "changepw", 
-                                   KRB_HOST,   1, KEYFILE))
-           status += krb_err_base;
-
     return status;
 }
 
@@ -770,7 +746,7 @@ int do_admin_call(login, passwd, uid)
           password. */
        /* 13 chars of placebo for backwards-compatability ### */
        bzero(uid_buf,sizeof(uid_buf));
-       (void) sprintf(uid_buf, "%013d", uid);
+       (void) sprintf(uid_buf, "%13s", uid);
        
        if ((status = admin_call(ADMIN_ADD_NEW_KEY_ATTR, login, 
                                 "", passwd, uid_buf)) != KSUCCESS)
This page took 1.171211 seconds and 5 git commands to generate.