From: Luke Howard Date: Sun, 13 Sep 2009 09:37:29 +0000 (+0000) Subject: cleanup, add some more naming extensions tests to S4U X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c900dad52f7c47a6f7e816f3d9ecd6501f9040a;p=thirdparty%2Fkrb5.git cleanup, add some more naming extensions tests to S4U git-svn-id: svn://anonsvn.mit.edu/krb5/users/lhoward/authdata@22742 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/tests/gssapi/t_namingexts.c b/src/tests/gssapi/t_namingexts.c index 605e15cb6c..f6da146c4a 100644 --- a/src/tests/gssapi/t_namingexts.c +++ b/src/tests/gssapi/t_namingexts.c @@ -77,14 +77,14 @@ displayCanonName(OM_uint32 *minor, gss_name_t name, char *tag) major = gss_canonicalize_name(minor, name, (gss_OID)gss_mech_krb5, &canon); if (GSS_ERROR(major)) { - displayStatus("gss_canonicalize_name", major, minor); + displayStatus("gss_canonicalize_name", major, *minor); return major; } major = gss_display_name(minor, canon, &buf, NULL); if (GSS_ERROR(major)) { gss_release_name(&tmp, &canon); - displayStatus("gss_display_name", major, minor); + displayStatus("gss_display_name", major, *minor); return major; } @@ -123,7 +123,7 @@ dumpAttribute(OM_uint32 *minor, &display_value, &more); if (GSS_ERROR(major)) { - displayStatus("gss_get_name_attribute", major, minor); + displayStatus("gss_get_name_attribute", major, *minor); break; } @@ -168,7 +168,7 @@ enumerateAttributes(OM_uint32 *minor, &asserted, &complete); if (GSS_ERROR(major)) { - displayStatus("gss_inquire_name", major, minor); + displayStatus("gss_inquire_name", major, *minor); goto cleanup; } @@ -262,13 +262,12 @@ testGreetAuthzData(OM_uint32 *minor, 1, &attr, &value); - if (GSS_ERROR(major)) { - if (major != GSS_S_UNAVAILABLE) - displayStatus("gss_set_name_attribute", major, minor); - return major; - } + if (major == GSS_S_UNAVAILABLE) + return GSS_S_COMPLETE; + else if (GSS_ERROR(major)) + displayStatus("gss_set_name_attribute", major, *minor); - return GSS_S_COMPLETE; + return major; } static OM_uint32 @@ -292,7 +291,7 @@ initAcceptSecContext(OM_uint32 *minor, major = gss_inquire_cred(minor, verifier_cred_handle, &target_name, NULL, NULL, NULL); if (GSS_ERROR(major)) { - displayStatus("gss_inquire_cred", major, minor); + displayStatus("gss_inquire_cred", major, *minor); return major; } @@ -320,7 +319,7 @@ initAcceptSecContext(OM_uint32 *minor, (void) gss_release_name(minor, &target_name); if (GSS_ERROR(major)) { - displayStatus("gss_init_sec_context", major, minor); + displayStatus("gss_init_sec_context", major, *minor); return major; } @@ -339,7 +338,7 @@ initAcceptSecContext(OM_uint32 *minor, NULL); if (GSS_ERROR(major)) - displayStatus("gss_accept_sec_context", major, minor); + displayStatus("gss_accept_sec_context", major, *minor); else { displayCanonName(minor, source_name, "Source name"); enumerateAttributes(minor, source_name, 1); diff --git a/src/tests/gssapi/t_s4u.c b/src/tests/gssapi/t_s4u.c index 8e9487a48f..33e0e94dcf 100644 --- a/src/tests/gssapi/t_s4u.c +++ b/src/tests/gssapi/t_s4u.c @@ -167,7 +167,7 @@ dumpAttribute(OM_uint32 *minor, &display_value, &more); if (GSS_ERROR(major)) { - displayStatus("gss_get_name_attribute", major, minor); + displayStatus("gss_get_name_attribute", major, *minor); break; } @@ -212,7 +212,7 @@ enumerateAttributes(OM_uint32 *minor, &asserted, &complete); if (GSS_ERROR(major)) { - displayStatus("gss_inquire_name", major, minor); + displayStatus("gss_inquire_name", major, *minor); goto cleanup; } @@ -238,6 +238,50 @@ cleanup: return major; } +static OM_uint32 +testGreetAuthzData(OM_uint32 *minor, + gss_name_t *name) +{ + OM_uint32 major, tmp_minor; + gss_buffer_desc attr; + gss_buffer_desc value; + gss_name_t canon; + + major = gss_canonicalize_name(minor, + *name, + (gss_OID)gss_mech_krb5, + &canon); + if (GSS_ERROR(major)) { + displayStatus("gss_canonicalize_name", major, *minor); + return major; + } + + attr.value = "greet:greeting"; + attr.length = strlen((char *)attr.value); + + value.value = "Hello, acceptor world!"; + value.length = strlen((char *)value.value); + + major = gss_set_name_attribute(minor, + canon, + 1, + &attr, + &value); + if (major == GSS_S_UNAVAILABLE) + major = GSS_S_COMPLETE; + else if (GSS_ERROR(major)) + displayStatus("gss_set_name_attribute", major, *minor); + else { + gss_release_name(&tmp_minor, name); + *name = canon; + canon = GSS_C_NO_NAME; + } + + if (canon != GSS_C_NO_NAME) + gss_release_name(&tmp_minor, &canon); + + return GSS_S_COMPLETE; +} static OM_uint32 initAcceptSecContext(OM_uint32 *minor, @@ -467,6 +511,10 @@ int main(int argc, char *argv[]) printf("Protocol transition tests follow\n"); printf("-----------------------------------\n\n"); + major = testGreetAuthzData(&minor, &user); + if (GSS_ERROR(major)) + goto out; + /* get S4U2Self cred */ major = gss_acquire_cred_impersonate_name(&minor, impersonator_cred_handle,