X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.orig;a=blobdiff_plain;f=util_radius.cpp;fp=util_radius.cpp;h=2c55bffbabf5b55c692f9a6399d90e5b190a8cd0;hp=7c6552acea1dbe8ced38b2ef5df749f540b79191;hb=b47c10882ea3409098780eb9608d3008c91f076d;hpb=849faf84b633a519a29c54f182a4ac643425b760 diff --git a/util_radius.cpp b/util_radius.cpp index 7c6552a..2c55bff 100644 --- a/util_radius.cpp +++ b/util_radius.cpp @@ -133,6 +133,28 @@ alreadyAddedAttributeP(std::vector &attrs, VALUE_PAIR *vp) return false; } +static bool +isSecretAttributeP(int attrid, int vendor) +{ + bool ret = false; + + switch (vendor) { + case RADIUS_VENDOR_ID_MICROSOFT: + switch (attrid) { + case RADIUS_VENDOR_ATTR_MS_MPPE_SEND_KEY: + case RADIUS_VENDOR_ATTR_MS_MPPE_RECV_KEY: + ret = true; + break; + default: + break; + } + default: + break; + } + + return ret; +} + bool gss_eap_radius_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute, void *data) const { @@ -142,6 +164,9 @@ gss_eap_radius_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addA for (vp = m_avps; vp != NULL; vp = vp->next) { gss_buffer_desc attribute; + if (isSecretAttributeP(ATTRID(vp->attribute), VENDOR(vp->attribute))) + continue; + if (alreadyAddedAttributeP(seen, vp)) continue; @@ -238,6 +263,9 @@ gss_eap_radius_attr_provider::getAttribute(int attrid, *more = 0; + if (isSecretAttributeP(attrid, vendor)) + return false; + vp = rc_avpair_get(m_avps, attrid, vendor); if (vp == NULL) return false; @@ -299,7 +327,9 @@ gss_eap_radius_attr_provider::getAttribute(int attrid, gss_buffer_t display_value, int *more) const { - return getAttribute(attrid, 0, authenticated, complete, + + return getAttribute(ATTRID(attrid), VENDOR(attrid), + authenticated, complete, value, display_value, more); }