diff --git a/lib/gssapi/test_acquire_cred.c b/lib/gssapi/test_acquire_cred.c index 2e7d4c684..120c86597 100644 --- a/lib/gssapi/test_acquire_cred.c +++ b/lib/gssapi/test_acquire_cred.c @@ -131,18 +131,19 @@ acquire_cred_service(const char *service, gss_cred_id_t cred_handle; OM_uint32 time_rec; gss_buffer_desc name_buffer; - gss_name_t name; - - name_buffer.value = rk_UNCONST(service); - name_buffer.length = strlen(service); - - major_status = gss_import_name(&minor_status, - &name_buffer, - nametype, - &name); - if (GSS_ERROR(major_status)) - errx(1, "import_name failed"); + gss_name_t name = GSS_C_NO_NAME; + if (service) { + name_buffer.value = rk_UNCONST(service); + name_buffer.length = strlen(service); + + major_status = gss_import_name(&minor_status, + &name_buffer, + nametype, + &name); + if (GSS_ERROR(major_status)) + errx(1, "import_name failed"); + } major_status = gss_acquire_cred(&minor_status, name, @@ -160,7 +161,8 @@ acquire_cred_service(const char *service, gss_release_cred(&minor_status, &cred_handle); } - gss_release_name(&minor_status, &name); + if (name != GSS_C_NO_NAME) + gss_release_name(&minor_status, &name); if (GSS_ERROR(major_status)) exit(1); @@ -245,8 +247,7 @@ main(int argc, char **argv) gssapi_err(major_status, minor_status, GSS_C_NO_OID)); } - if (acquire_name) - acquire_cred_service(acquire_name, type, flag); + acquire_cred_service(acquire_name, type, flag); return 0; }