]> andersk Git - moira.git/blobdiff - reg_svr/reg_svr.c
fix typo in get_ace_use. (This, plus the addition of `gaus TYPE KERBEROS'
[moira.git] / reg_svr / reg_svr.c
index a0ea257ee482e5d099ae6d66abb40f5f8c5cbdff..e4d3d782ce28824105089dcf613e6c1725eece88 100644 (file)
@@ -21,7 +21,7 @@ static char *rcsid_reg_svr_c = "$Header$";
 
 #include <mit-copyright.h>
 #include <stdio.h>
-#include <strings.h>
+#include <string.h>
 #include <ctype.h>
 #include <sys/time.h>
 #include <sys/types.h>
@@ -56,14 +56,15 @@ main(argc,argv)
     whoami = argv[0];
     
     /* Error messages sent one line at a time */
-    setlinebuf(stderr);
-    setlinebuf(stdout);
+    setvbuf(stderr, NULL, _IOLBF, BUFSIZ);
+    setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
     set_com_err_hook(reg_com_err_hook);
     
     /* Initialize com_err error tables */
     init_ureg_err_tbl();
     init_krb_err_tbl();
     init_kadm_err_tbl();
+    initialize_gdss_error_table();
     
     /* Use com_err or output to stderr for all log messages. */    
 #ifdef DEBUG
@@ -317,7 +318,7 @@ int find_user(message)
 
     /* Zero the mit_id field in the formatted packet structure.  This
        being zeroed means that no user was found. */
-    bzero(message->db.mit_id,sizeof(message->db.mit_id));
+    memset(message->db.mit_id,0,sizeof(message->db.mit_id));
     
     if (status == SUCCESS)
     {
@@ -459,7 +460,7 @@ int ureg_kadm_init()
 
     if (!inited) {
        inited++;
-       bzero(krbrealm, sizeof(krbrealm));
+       memset(krbrealm, 0, sizeof(krbrealm));
        if (status = krb_get_lrealm(krbrealm, 1)) {
            status += krb_err_base;
            com_err(whoami, status, " fetching kerberos realm");
@@ -526,7 +527,7 @@ int reserve_krb(login)
 #endif DEBUG
 
     if ((status = ureg_kadm_init()) == SUCCESS) {
-       bzero((char *)&new, sizeof(new));
+       memset(&new, 0, sizeof(new));
        SET_FIELD(KADM_DESKEY, new.fields);
        SET_FIELD(KADM_NAME, new.fields);
        
@@ -540,7 +541,7 @@ int reserve_krb(login)
        if (status != KADM_SUCCESS) 
            com_err(whoami, status, " while reserving principal");
        
-       bzero((char *)&new, sizeof(new));
+       memset(&new, 0, sizeof(new));
     }
 
     dest_tkt();
@@ -562,7 +563,7 @@ int setpass_krb(login, password)
     u_long *lkey = (u_long *)key;
 
     if ((status = ureg_kadm_init()) == SUCCESS) {
-       bzero((char *)&new, sizeof(new));
+       memset(&new, 0, sizeof(new));
        SET_FIELD(KADM_DESKEY, new.fields);
        SET_FIELD(KADM_NAME, new.fields);
        
@@ -852,6 +853,7 @@ char *retval;
        }
        q_argv[U_NAME+1] = login;
        q_argv[U_STATE+1] = "7";
+       q_argv[U_SIGNATURE+1] = "";
        status = mr_query("update_user_account", U_MODTIME+1, q_argv,
                           null_callproc, NULL);
        switch (status)
@@ -860,6 +862,7 @@ char *retval;
            status = SUCCESS;
            break;
          case MR_IN_USE:
+         case MR_NOT_UNIQUE:
            status = UREG_LOGIN_USED;
            break;
          case MR_DEADLOCK:
@@ -980,7 +983,7 @@ char *retval;
     
     creds.length = ntohl(*((int *)bp));
     bp += sizeof(int);
-    bcopy(bp, creds.dat, creds.length);
+    memcpy(creds.dat, bp, creds.length);
     creds.mbz = 0;
     bp += creds.length;
 
@@ -1011,16 +1014,22 @@ char *retval;
                     keys, auth.session, 0);
 
     id = buf;
-    passwd = index(buf, ',');
+    passwd = strchr(buf, ',');
     *passwd++ = 0;
 #ifdef DEBUG
     com_err(whoami, 0, "Got id: %s, passwd %d chars", id, strlen(passwd));
 #endif
 
     if (strcmp(id, argv[U_MITID + 1])) {
-       status = UREG_USER_NOT_FOUND;
-       com_err(whoami, status, "IDs mismatch: %s, %s", id, argv[U_MITID + 1]);
-       return status;
+       char buf[32];
+
+       EncryptID(buf, id, argv[U_FIRST+1], argv[U_LAST+1]);
+       if (strcmp(buf, argv[U_MITID + 1])) {
+           status = UREG_USER_NOT_FOUND;
+           com_err(whoami, status, "IDs mismatch: %s (%s), %s", id, buf,
+                   argv[U_MITID + 1]);
+           return status;
+       }
     }
 
     /* now do actual password setting stuff */
@@ -1030,7 +1039,7 @@ char *retval;
        return(status);
     }
 
-    bzero((char *)&kv, sizeof(kv));
+    memset(&kv, 0, sizeof(kv));
     SET_FIELD(KADM_DESKEY, kv.fields);
     SET_FIELD(KADM_NAME, kv.fields);
     SET_FIELD(KADM_INST, kv.fields);
@@ -1038,7 +1047,7 @@ char *retval;
     kv.key_low = htonl(lkey[0]);
     kv.key_high = htonl(lkey[1]);
     strcpy(kv.name, message->first);
-    strcpy(kv.instance, "secure");
+    strcpy(kv.instance, "extra");
 
     if ((status = kadm_add(&kv)) != KADM_SUCCESS) {
        com_err(whoami, status, " while creating kerberos principal");
This page took 0.20247 seconds and 4 git commands to generate.