name->krbPrincipal = *principal;
*principal = NULL;
- if (KRB_PRINC_LENGTH(name->krbPrincipal) > 1) {
+ if (KRB_PRINC_LENGTH(name->krbPrincipal) >= 1) {
name->flags |= NAME_FLAG_SERVICE;
- } else {
+ }
+ if (KRB_PRINC_LENGTH(name->krbPrincipal) == 1) {
name->flags |= NAME_FLAG_NAI;
}
if (major == GSS_S_COMPLETE &&
mechType != GSS_C_NO_OID) {
GSSEAP_ASSERT(gssEapIsConcreteMechanismOid(mechType));
+ GSSEAP_ASSERT(name != GSS_C_NO_NAME);
GSSEAP_ASSERT(name->mechanismUsed == GSS_C_NO_OID);
major = gssEapCanonicalizeOid(minor, mechType, 0, &name->mechanismUsed);
}
major = makeStringBuffer(minor, krbName, output_name_buffer);
- if (GSS_ERROR(major)) {
- krb5_free_unparsed_name(krbContext, krbName);
- return major;
- }
-
+#ifdef HAVE_HEIMDAL_VERSION
+ krb5_xfree(krbName);
+#else
krb5_free_unparsed_name(krbContext, krbName);
+#endif
+ if (GSS_ERROR(major))
+ return major;
if (output_name_buffer->length == 0) {
name_type = GSS_C_NT_ANONYMOUS;