X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=plugins%2Fgs2.c;h=fefa9af0b92ea4bb902431d179f584f6a363b05a;hb=e2a014c0caf752b3a22046020867b98474ea1ae8;hp=cee634f437042f8fa23f5fbcc027612413c24acc;hpb=d2000467fe0f288a09857297f97c884cfa2bee8a;p=cyrus-sasl.git diff --git a/plugins/gs2.c b/plugins/gs2.c index cee634f..fefa9af 100644 --- a/plugins/gs2.c +++ b/plugins/gs2.c @@ -369,16 +369,6 @@ gs2_server_mech_step(void *conn_context, &input_token); if (ret != SASL_OK) goto cleanup; - - if ((text->gs2_flags & GS2_CB_FLAG_MASK) == GS2_CB_FLAG_N) { - if (params->chanbindingcrit != 0) - ret = SASL_BADAUTH; - } else if ((text->gs2_flags & GS2_CB_FLAG_MASK) == GS2_CB_FLAG_Y) { - if (SASL_CB_PRESENT(params)) - ret = SASL_BADAUTH; - } - if (ret != SASL_OK) - goto cleanup; } else { input_token.value = (void *)clientin; input_token.length = clientinlen; @@ -489,6 +479,18 @@ gs2_server_mech_step(void *conn_context, if (ret != SASL_OK) goto cleanup; + switch (text->gs2_flags & GS2_CB_FLAG_MASK) { + case GS2_CB_FLAG_N: + oparams->chanbindingflag = SASL_CB_FLAG_NONE; + break; + case GS2_CB_FLAG_P: + oparams->chanbindingflag = SASL_CB_FLAG_USED; + break; + case GS2_CB_FLAG_Y: + oparams->chanbindingflag == SASL_CB_FLAG_WANT; + break; + } + if (text->client_creds != GSS_C_NO_CREDENTIAL) oparams->client_creds = &text->client_creds; else