use new principal building routines
authorJohn Kohl <jtkohl@mit.edu>
Tue, 30 Apr 1991 15:01:30 +0000 (15:01 +0000)
committerJohn Kohl <jtkohl@mit.edu>
Tue, 30 Apr 1991 15:01:30 +0000 (15:01 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2070 dc483132-0cff-0310-8789-dd5450dbe970

src/clients/kinit/kinit.c
src/lib/krb425/get_cred.c
src/lib/krb425/mk_req.c
src/lib/krb425/rd_req.c

index 8e3bcd8ae5f6e82f3e584a69082386bf64382e76..3b9061f8bb083995105cb9b2d867250e28b8b647 100644 (file)
@@ -60,7 +60,7 @@ main(argc, argv)
     krb5_address **my_addresses;
     krb5_error_code code;
     krb5_principal me;
-    krb5_data *server[4];
+    krb5_principal server;
     krb5_creds my_creds;
     krb5_timestamp now;
 
@@ -140,12 +140,17 @@ main(argc, argv)
     memset((char *)&my_creds, 0, sizeof(my_creds));
     
     my_creds.client = me;
-    my_creds.server = server;
 
-    server[0] = me[0];         /* realm name */
-    server[1] = &tgtname;
-    server[2] = me[0];
-    server[3] = 0;
+    if (code = krb5_build_principal_ext(&server,
+                                       me[0]->length, me[0]->data,
+                                       tgtname.length, tgtname.data,
+                                       me[0]->length, me[0]->data,
+                                       0)) {
+       com_err(argv[0], code, "while building server name");
+       exit(1);
+    }
+
+    my_creds.server = server;
 
     code = krb5_os_localaddr(&my_addresses);
     if (code != 0) {
@@ -170,6 +175,7 @@ main(argc, argv)
                                         0, /* let lib read pwd from kbd */
                                         ccache,
                                         &my_creds);
+    krb5_free_principal(server);
     if (code != 0) {
        com_err (argv[0], code, "while getting initial credentials");
        exit(1);
index 69bfe6f57e06dfd1bba7b5152d1daaf94e180387..e4e0aa6002cfdc27f929a51a50d2a3502648953d 100644 (file)
@@ -28,19 +28,18 @@ CREDENTIALS *c;
        static krb5_principal client_principal = { 0 };
 
        krb5_creds creds;
-       krb5_data *server[4];
+       krb5_principal server;
        krb5_data srvdata[3];
        krb5_error_code r;
        krb5_ticket *ticket;
 
-       set_data5(srvdata[0], realm);
-       set_data5(srvdata[1], service);
-       set_data5(srvdata[2], instance);
-
-       server[0] = &srvdata[0];
-       server[1] = &srvdata[1];
-       server[2] = &srvdata[2];
-       server[3] = 0;
+       if (r = krb5_build_principal(&server,
+                                    strlen(realm), realm,
+                                    service,
+                                    instance,
+                                    0)) {
+           return(krb425error(r));
+       }
 
        if (!_krb425_ccache)
                krb5_cc_default(&_krb425_ccache);
@@ -53,8 +52,10 @@ CREDENTIALS *c;
        creds.times.endtime = 0;
        creds.keyblock.keytype = KEYTYPE_DES;
 
-       if (r = krb5_get_credentials(0, _krb425_ccache, &creds))
-               return(krb425error(r));
+       r = krb5_get_credentials(0, _krb425_ccache, &creds);
+       krb5_free_principal(server);
+       if (r)
+           return(krb425error(r));
        
 #ifdef EBUG
        {
index 188f6b641a84ad30f684bebf5b00213236088761..ea748df14937e68a615fb69a5f736c0c584f4141 100644 (file)
@@ -26,20 +26,18 @@ char *instance;
 char *realm;
 u_long checksum;
 {
-       krb5_data *server[4];
-       krb5_data srvdata[3];
+       krb5_principal server;
        krb5_error_code r;
        krb5_data outbuf;
        krb5_checksum ck;
 
-       set_data5(srvdata[0], realm);
-       set_data5(srvdata[1], service);
-       set_data5(srvdata[2], instance);
-
-       server[0] = &srvdata[0];
-       server[1] = &srvdata[1];
-       server[2] = &srvdata[2];
-       server[3] = 0;
+       if (r = krb5_build_principal(&server,
+                                    strlen(realm), realm,
+                                    service,
+                                    instance,
+                                    0)) {
+           return(krb425error(r));
+       }
 
        if (!_krb425_ccache)
                krb5_cc_default(&_krb425_ccache);
@@ -62,6 +60,7 @@ u_long checksum;
        if (r)
                ERROR(r)
 #endif
+       krb5_free_principal(server);
        if (!r) {
                if (outbuf.length > MAX_KTXT_LEN) {
 #ifdef EBUG
index baf041b02755dc49cbea3436488f13380019ff66..797eeb2609ca48447982b5fa0dc8014ab50f9e84 100644 (file)
@@ -43,8 +43,7 @@ char *fn;
        krb5_address peer;
        krb5_tkt_authent *authdat;
        char addr[4];
-       krb5_data *server[4];
-       krb5_data srvdata[3];
+       krb5_principal server;
        krb5_error_code r;
        krb5_data authe;
        extern int gethostname();
@@ -81,15 +80,14 @@ char *fn;
                }
                instance = hostname;
        }
-       set_data5(srvdata[0], _krb425_local_realm);
-       set_data5(srvdata[1], service);
-       set_data5(srvdata[2], instance);
-
-       server[0] = &srvdata[0];
-       server[1] = &srvdata[1];
-       server[2] = &srvdata[2];
-       server[3] = 0;
-
+       if (r = krb5_build_principal(&server,
+                                    strlen(_krb425_local_realm),
+                                    _krb425_local_realm,
+                                    service,
+                                    instance,
+                                    0)) {
+           return(krb425error(r));
+       }
        
        authe.length = authent->length;
        authe.data = (char *)authent->dat;
@@ -129,16 +127,17 @@ char *fn;
 /* ? : will break some compilers when dealing with function pointers */
        if (use_set_key)
                r = krb5_rd_req(&authe,
-                               (krb5_principal)server,
+                               server,
                                from_addr ? &peer : 0,
                                fn, setkey_key_proc,
                                0, 0, &authdat);
        else
                r = krb5_rd_req(&authe,
-                               (krb5_principal)server,
+                               server,
                                from_addr ? &peer : 0,
                                fn, 0,
                                0, 0, &authdat);
+       krb5_free_principal(server);
        if (r) {
 #ifdef EBUG
                ERROR(r)