if (GSS_ERROR(major))
return major;
- if (krb5_enctype_to_name(etype, 0, &krbBuf[4], sizeof(krbBuf) - 4) == 0) {
+ if (mech_name != GSS_C_NO_BUFFER &&
+ krb5_enctype_to_name(etype, 0, &krbBuf[4], sizeof(krbBuf) - 4) == 0) {
major = makeStringBuffer(minor, krbBuf, mech_name);
if (GSS_ERROR(major))
return major;
}
- major = makeStringBuffer(minor,
- "Extensible Authentication Protocol GSS-API Mechanism",
- mech_description);
- if (GSS_ERROR(major))
- return major;
+ if (mech_description != GSS_C_NO_BUFFER) {
+ major = makeStringBuffer(minor,
+ "Extensible Authentication Protocol GSS-API Mechanism",
+ mech_description);
+ if (GSS_ERROR(major))
+ return major;
+ }
- name = gssEapOidToSaslName(mech);
- if (name == GSS_C_NO_BUFFER)
- major = GSS_S_BAD_MECH;
- else
- major = duplicateBuffer(minor, name, sasl_mech_name);
+ if (sasl_mech_name != GSS_C_NO_BUFFER) {
+ name = gssEapOidToSaslName(mech);
+ if (name == GSS_C_NO_BUFFER)
+ major = GSS_S_BAD_MECH;
+ else
+ major = duplicateBuffer(minor, name, sasl_mech_name);
+ }
return major;
}
oidEqual(nameType, GSS_EAP_NT_PRINCIPAL_NAME))
major = importUserName(minor, nameBuffer, name);
else if (oidEqual(nameType, GSS_C_NT_HOSTBASED_SERVICE) ||
- oidEqual(nameType, GSS_C_NT_HOSTBASED_SERVICE_X))
+ oidEqual(nameType, GSS_C_NT_HOSTBASED_SERVICE_X))
major = importServiceName(minor, nameBuffer, name);
else if (oidEqual(nameType, GSS_C_NT_EXPORT_NAME))
major = gssEapImportNameInternal(minor, nameBuffer, name,