{
OM_uint32 major, tmpMinor;
- *minor = 0;
-
if (ctx == GSS_C_NO_CONTEXT) {
- major = GSS_S_NO_CONTEXT;
- goto cleanup;
+ *minor = EINVAL;
+ return GSS_S_NO_CONTEXT;
}
+ *minor = 0;
+
+ GSSEAP_MUTEX_LOCK(&ctx->mutex);
+
if (src_name != NULL) {
major = gssEapDuplicateName(minor, ctx->initiatorName, src_name);
if (GSS_ERROR(major))
major = GSS_S_COMPLETE;
cleanup:
+ GSSEAP_MUTEX_UNLOCK(&ctx->mutex);
+
if (GSS_ERROR(major)) {
gssEapReleaseName(&tmpMinor, src_name);
gssEapReleaseName(&tmpMinor, targ_name);