krb-udp-cleanup-20010119
authorDerrick Brashear <shadow@dementia.org>
Fri, 19 Jan 2001 06:26:34 +0000 (06:26 +0000)
committerDerrick Brashear <shadow@dementia.org>
Fri, 19 Jan 2001 06:26:34 +0000 (06:26 +0000)
Make krb_udp try kerberos-iv as a fallback (from the original default of
kerberos4) before going to "kerberos". "kerberos" incidentally is 88 on all
modern platforms, so lord forbid you want to run this and something which
can actually answer krb5 requests, if you're using the default services.

Also minor fix for the size of an answer packet.

src/kauth/krb_udp.c

index 568334f..0d470a8 100644 (file)
@@ -568,7 +568,7 @@ static err_packet (ksoc, pkt, code, reason)
     }
 
     ans.len = 2 + strlen(pkt->name) + strlen(pkt->inst) + strlen(pkt->realm) +
-       3/* nulls */ + sizeof(afs_int32) + strlen (buf) + 1;
+       3/* nulls */ + (2 * sizeof(afs_int32)) + strlen (buf) + 1;
     if (ans.len > sizeof(ans.data)) {
        printf ("Answer packet too long\n");
        return;
@@ -827,7 +827,13 @@ afs_int32 init_krb_udp ()
     taddr.sin_family = AF_INET;  /* added for NCR port */
     if ( !sp ) 
     {
-       /* if kerberos-4 is not available, try "kerberos" */
+       /* if kerberos-4 is not available, try "kerberos-iv" */
+       krb4name = "kerberos-iv";
+       sp = getservbyname(krb4name, "udp");
+    }
+    if ( !sp ) 
+    {
+       /* if kerberos-iv is not available, try "kerberos" */
        krb4name = "kerberos";
        sp = getservbyname(krb4name, "udp");
     }