X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=mech_eap%2Fset_cred_option.c;h=7bb9b7b33e1748f729650dcbd8818aabdcb76611;hb=0879254d5371bf8ffd426a665ff95417858b994d;hp=bfffa1fc241130d2c604df7c1c7aa461aba0ab3c;hpb=ccf542544c4add8d720da2e5c9e048bab695732d;p=mech_eap.orig diff --git a/mech_eap/set_cred_option.c b/mech_eap/set_cred_option.c index bfffa1f..7bb9b7b 100644 --- a/mech_eap/set_cred_option.c +++ b/mech_eap/set_cred_option.c @@ -42,7 +42,7 @@ setCredRadiusConfigFile(OM_uint32 *minor, const gss_OID oid GSSEAP_UNUSED, const gss_buffer_t buffer) { - OM_uint32 major; + OM_uint32 major, tmpMinor; gss_buffer_desc configFileBuffer = GSS_C_EMPTY_BUFFER; if (buffer != GSS_C_NO_BUFFER && buffer->length != 0) { @@ -51,10 +51,8 @@ setCredRadiusConfigFile(OM_uint32 *minor, return major; } - if (cred->radiusConfigFile != NULL) - GSSEAP_FREE(cred->radiusConfigFile); - - cred->radiusConfigFile = (char *)configFileBuffer.value; + gss_release_buffer(&tmpMinor, &cred->radiusConfigFile); + cred->radiusConfigFile = configFileBuffer; *minor = 0; return GSS_S_COMPLETE; @@ -66,7 +64,7 @@ setCredRadiusConfigStanza(OM_uint32 *minor, const gss_OID oid GSSEAP_UNUSED, const gss_buffer_t buffer) { - OM_uint32 major; + OM_uint32 major, tmpMinor; gss_buffer_desc configStanzaBuffer = GSS_C_EMPTY_BUFFER; if (buffer != GSS_C_NO_BUFFER && buffer->length != 0) { @@ -75,10 +73,8 @@ setCredRadiusConfigStanza(OM_uint32 *minor, return major; } - if (cred->radiusConfigStanza != NULL) - GSSEAP_FREE(cred->radiusConfigStanza); - - cred->radiusConfigStanza = (char *)configStanzaBuffer.value; + gss_release_buffer(&tmpMinor, &cred->radiusConfigStanza); + cred->radiusConfigStanza = configStanzaBuffer; *minor = 0; return GSS_S_COMPLETE; @@ -116,6 +112,15 @@ setCredFlag(OM_uint32 *minor, return GSS_S_COMPLETE; } +static OM_uint32 +setCredPassword(OM_uint32 *minor, + gss_cred_id_t cred, + const gss_OID oid GSSEAP_UNUSED, + const gss_buffer_t buffer) +{ + return gssEapSetCredPassword(minor, cred, buffer); +} + static struct { gss_OID_desc oid; OM_uint32 (*setOption)(OM_uint32 *, gss_cred_id_t cred, @@ -136,13 +141,19 @@ static struct { { 11, "\x2B\x06\x01\x04\x01\xA9\x4A\x16\x03\x03\x03" }, setCredFlag, }, + /* 1.3.6.1.4.1.5322.22.3.3.4 */ + { + { 11, "\x2B\x06\x01\x04\x01\xA9\x4A\x16\x03\x03\x04" }, + setCredPassword, + }, }; gss_OID GSS_EAP_CRED_SET_RADIUS_CONFIG_FILE = &setCredOps[0].oid; gss_OID GSS_EAP_CRED_SET_RADIUS_CONFIG_STANZA = &setCredOps[1].oid; gss_OID GSS_EAP_CRED_SET_CRED_FLAG = &setCredOps[2].oid; +gss_OID GSS_EAP_CRED_SET_CRED_PASSWORD = &setCredOps[3].oid; -OM_uint32 +OM_uint32 GSSAPI_CALLCONV gssspi_set_cred_option(OM_uint32 *minor, gss_cred_id_t *pCred, const gss_OID desired_object,