Index: include/krb5.hin =================================================================== RCS file: /cvs/krbdev/krb5/src/include/krb5.hin,v retrieving revision 1.94.2.5.2.17 diff -p -u -r1.94.2.5.2.17 krb5.hin --- include/krb5.hin 2002/04/16 23:47:53 1.94.2.5.2.17 +++ include/krb5.hin 2003/03/19 00:38:54 @@ -326,7 +326,7 @@ typedef krb5_const krb5_principal_data F #define krb5_princ_size(context, princ) (princ)->length #define krb5_princ_type(context, princ) (princ)->type #define krb5_princ_name(context, princ) (princ)->data -#define krb5_princ_component(context, princ,i) ((princ)->data + i) +#define krb5_princ_component(context, princ,i) (i < krb5_princ_size(context, princ) ? ((princ)->data + i) : NULL) /* * end "base-defs.h" Index: kdc/kdc_util.c =================================================================== RCS file: /cvs/krbdev/krb5/src/kdc/kdc_util.c,v retrieving revision 5.96.2.2.2.3 diff -p -u -r5.96.2.2.2.3 kdc_util.c --- kdc/kdc_util.c 2002/10/31 00:38:34 5.96.2.2.2.3 +++ kdc/kdc_util.c 2003/03/19 00:39:00 @@ -157,7 +157,8 @@ realm_compare(princ1, princ2) krb5_boolean krb5_is_tgs_principal(principal) krb5_principal principal; { - if ((krb5_princ_component(kdc_context, principal, 0)->length == + if (krb5_princ_size(kdc_context, principal) > 0 && + (krb5_princ_component(kdc_context, principal, 0)->length == KRB5_TGS_NAME_SIZE) && (!memcmp(krb5_princ_component(kdc_context, principal, 0)->data, KRB5_TGS_NAME, KRB5_TGS_NAME_SIZE))) Index: lib/krb5/krb/unparse.c =================================================================== RCS file: /cvs/krbdev/krb5/src/lib/krb5/krb/unparse.c,v retrieving revision 5.27.4.1 diff -p -u -r5.27.4.1 unparse.c --- lib/krb5/krb/unparse.c 2002/08/12 22:55:01 5.27.4.1 +++ lib/krb5/krb/unparse.c 2003/03/19 00:39:02 @@ -153,7 +153,8 @@ krb5_unparse_name_ext(context, principal *q++ = COMPONENT_SEP; } - q--; /* Back up last component separator */ + if (i > 0) + q--; /* Back up last component separator */ *q++ = REALM_SEP; cp = krb5_princ_realm(context, principal)->data;