diff --git a/lib/krb5/test_princ.c b/lib/krb5/test_princ.c index 9a1b54160..588632f15 100644 --- a/lib/krb5/test_princ.c +++ b/lib/krb5/test_princ.c @@ -232,6 +232,87 @@ test_princ(krb5_context context) krb5_free_principal(context, p); } +static void +test_enterprise(krb5_context context) +{ + krb5_error_code ret; + char *unparsed; + krb5_principal p; + + ret = krb5_set_default_realm(context, "SAMBA.ORG"); + if (ret) + krb5_err(context, 1, ret, "krb5_parse_name"); + + ret = krb5_parse_name_flags(context, "lha@su.se@WIN.SU.SE", + KRB5_PRINCIPAL_PARSE_ENTERPRISE, &p); + if (ret) + krb5_err(context, 1, ret, "krb5_parse_name_flags"); + + ret = krb5_unparse_name(context, p, &unparsed); + if (ret) + krb5_err(context, 1, ret, "krb5_unparse_name"); + + krb5_free_principal(context, p); + + if (strcmp(unparsed, "lha\\@su.se@WIN.SU.SE") != 0) + krb5_errx(context, 1, "enterprise name failed 1"); + free(unparsed); + + /* + * + */ + + ret = krb5_parse_name_flags(context, "lha\\@su.se@WIN.SU.SE", + KRB5_PRINCIPAL_PARSE_ENTERPRISE, &p); + if (ret) + krb5_err(context, 1, ret, "krb5_parse_name_flags"); + + ret = krb5_unparse_name(context, p, &unparsed); + if (ret) + krb5_err(context, 1, ret, "krb5_unparse_name"); + + krb5_free_principal(context, p); + if (strcmp(unparsed, "lha\\@su.se\\@WIN.SU.SE@SAMBA.ORG") != 0) + krb5_errx(context, 1, "enterprise name failed 2: %s", unparsed); + free(unparsed); + + /* + * + */ + + ret = krb5_parse_name_flags(context, "lha\\@su.se@WIN.SU.SE", 0, &p); + if (ret) + krb5_err(context, 1, ret, "krb5_parse_name_flags"); + + ret = krb5_unparse_name(context, p, &unparsed); + if (ret) + krb5_err(context, 1, ret, "krb5_unparse_name"); + + krb5_free_principal(context, p); + if (strcmp(unparsed, "lha\\@su.se@WIN.SU.SE") != 0) + krb5_errx(context, 1, "enterprise name failed 3"); + free(unparsed); + + /* + * + */ + + ret = krb5_parse_name_flags(context, "lha@su.se", + KRB5_PRINCIPAL_PARSE_ENTERPRISE, &p); + if (ret) + krb5_err(context, 1, ret, "krb5_parse_name_flags"); + + ret = krb5_unparse_name(context, p, &unparsed); + if (ret) + krb5_err(context, 1, ret, "krb5_unparse_name"); + + krb5_free_principal(context, p); + if (strcmp(unparsed, "lha\\@su.se@SAMBA.ORG") != 0) + krb5_errx(context, 1, "enterprise name failed 2: %s", unparsed); + free(unparsed); +} + + int main(int argc, char **argv) { @@ -246,6 +327,8 @@ main(int argc, char **argv) test_princ(context); + test_enterprise(context); + krb5_free_context(context); return 0;