Apply by doing:
       cd /usr/src
       patch -p0 < 026_kerberos.patch

And then rebuild and install the Kerberos 5 KDC:
       cd kerberosV/lib/roken
       make obj
       make cleandir
       make depend
       make
       cd ../../libexec/kdc
       make obj
       make cleandir
       make depend
       make
       make install

Index: kerberosV/src/kdc/524.c
===================================================================
RCS file: /cvs/src/kerberosV/src/kdc/524.c,v
retrieving revision 1.1.1.3
retrieving revision 1.1.1.3.2.1
diff -u -r1.1.1.3 -r1.1.1.3.2.1
--- kerberosV/src/kdc/524.c     6 Feb 2002 08:54:50 -0000       1.1.1.3
+++ kerberosV/src/kdc/524.c     22 Mar 2003 06:57:21 -0000      1.1.1.3.2.1
@@ -251,6 +251,14 @@
       free_EncTicketPart(&et);
       goto out;
    }
+    if (!enable_v4_cross_realm && strcmp (et.crealm, t->realm) != 0) {
+       kdc_log(0, "524 cross-realm %s -> %s disabled", et.crealm,
+               t->realm);
+       free_EncTicketPart(&et);
+       ret = KRB5KDC_ERR_POLICY;
+       goto out;
+    }
+
    ret = encode_v4_ticket(buf + sizeof(buf) - 1, sizeof(buf),
                          &et, &t->sname, &len);
    free_EncTicketPart(&et);
Index: kerberosV/src/kdc/config.c
===================================================================
RCS file: /cvs/src/kerberosV/src/kdc/config.c,v
retrieving revision 1.1.1.3
retrieving revision 1.1.1.3.2.1
diff -u -r1.1.1.3 -r1.1.1.3.2.1
--- kerberosV/src/kdc/config.c  6 Feb 2002 08:54:50 -0000       1.1.1.3
+++ kerberosV/src/kdc/config.c  22 Mar 2003 06:57:21 -0000      1.1.1.3.2.1
@@ -67,6 +67,7 @@
char *v4_realm;
int enable_v4 = -1;
int enable_524 = -1;
+int enable_v4_cross_realm = -1;
int enable_kaserver = -1;
#endif

@@ -100,6 +101,10 @@
    {  "524",          0,      arg_negative_flag, &enable_524,
       "don't respond to 524 requests"
    },
+    {  "kerberos4-cross-realm",        0,      arg_flag,
+       &enable_v4_cross_realm,
+       "respond to kerberos 4 requests from foreign realms"
+    },
    {
       "v4-realm",     'r',    arg_string, &v4_realm,
       "realm to serve v4-requests for"
@@ -301,6 +306,12 @@
    if(enable_v4 == -1)
       enable_v4 = krb5_config_get_bool_default(context, cf, TRUE, "kdc",
                                        "enable-kerberos4", NULL);
+    if(enable_v4_cross_realm == -1)
+       enable_v4_cross_realm =
+           krb5_config_get_bool_default(context, NULL,
+                                        FALSE, "kdc",
+                                        "enable-kerberos4-cross-realm",
+                                        NULL);
    if(enable_524 == -1)
       enable_524 = krb5_config_get_bool_default(context, cf, enable_v4,
                                                 "kdc", "enable-524", NULL);
@@ -325,8 +336,11 @@
                                   "kdc",
                                   "v4-realm",
                                   NULL);
-       if(p)
+       if(p != NULL) {
           v4_realm = strdup(p);
+           if (v4_realm == NULL)
+               krb5_errx(context, 1, "out of memory");
+       }
    }
    if (enable_kaserver == -1)
       enable_kaserver = krb5_config_get_bool_default(context, cf, FALSE,
@@ -355,6 +369,8 @@
#ifdef KRB4
    if(v4_realm == NULL){
       v4_realm = malloc(40); /* REALM_SZ */
+       if (v4_realm == NULL)
+           krb5_errx(context, 1, "out of memory");
       krb_get_lrealm(v4_realm, 1);
    }
#endif
Index: kerberosV/src/kdc/kdc.8
===================================================================
RCS file: /cvs/src/kerberosV/src/kdc/kdc.8,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -u -r1.2 -r1.2.4.1
--- kerberosV/src/kdc/kdc.8     25 Jun 2001 04:43:37 -0000      1.2
+++ kerberosV/src/kdc/kdc.8     22 Mar 2003 06:57:21 -0000      1.2.4.1
@@ -1,4 +1,4 @@
-.\" $KTH: kdc.8,v 1.13 2001/06/08 21:35:32 joda Exp $
+.\" $Id: kdc.8,v 1.2.4.1 2003/03/22 06:57:21 miod Exp $
.\"
.Dd July 27, 1997
.Dt KDC 8
@@ -19,6 +19,7 @@
.Fl -v4-realm= Ns Ar string
.Xc
.Oc
+.Op Fl -kerberos4-cross-realm
.Op Fl K | Fl -no-kaserver
.Op Fl r Ar realm
.Op Fl -v4-realm= Ns Ar realm
@@ -56,6 +57,12 @@
.Xc
Gives an upper limit on the size of the requests that the kdc is
willing to handle.
+.It Xo
+.Fl -kerberos4-cross-realm
+.Xc
+respond to kerberos 4 requests from foreign realms.
+This is a known security hole and should not be enabled unless you
+understand the consequences and are willing to live with them.
.It Xo
.Fl H Ns ,
.Fl -enable-http
Index: kerberosV/src/kdc/kdc_locl.h
===================================================================
RCS file: /cvs/src/kerberosV/src/kdc/kdc_locl.h,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -r1.3 -r1.3.2.1
--- kerberosV/src/kdc/kdc_locl.h        6 Feb 2002 09:10:02 -0000       1.3
+++ kerberosV/src/kdc/kdc_locl.h        22 Mar 2003 06:57:21 -0000      1.3.2.1
@@ -67,6 +67,7 @@
extern char *v4_realm;
extern int enable_v4;
extern int enable_524;
+extern int enable_v4_cross_realm;
extern krb5_boolean enable_kaserver;
#endif

Index: kerberosV/src/kdc/kerberos4.c
===================================================================
RCS file: /cvs/src/kerberosV/src/kdc/kerberos4.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -u -r1.1.1.2 -r1.1.1.2.2.1
--- kerberosV/src/kdc/kerberos4.c       6 Feb 2002 08:54:52 -0000       1.1.1.2
+++ kerberosV/src/kdc/kerberos4.c       22 Mar 2003 06:57:21 -0000      1.1.1.2.2.1
@@ -430,6 +430,13 @@
           goto out2;
       }

+       if (!enable_v4_cross_realm && strcmp(realm, v4_realm) != 0) {
+           kdc_log(0, "krb4 Cross-realm %s -> %s disabled", realm, v4_realm);
+           make_err_reply(reply, KERB_ERR_PRINCIPAL_UNKNOWN,
+                          "Can't hop realms");
+           goto out2;
+       }
+
       if(strcmp(sname, "changepw") == 0){
           kdc_log(0, "Bad request for changepw ticket");
           make_err_reply(reply, KERB_ERR_PRINCIPAL_UNKNOWN,