From 5476ff44defa81b6e4b2204e110868b729965060 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Thu, 14 Oct 2010 07:03:20 +1100 Subject: [PATCH] attrbutes internal to the GSS EAP mechanism (not keys) can now be requested, but they are not enumerated, nor can they be set or deleted --- mech_eap/util_radius.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/mech_eap/util_radius.cpp b/mech_eap/util_radius.cpp index 9136a5c..3d8cb83 100644 --- a/mech_eap/util_radius.cpp +++ b/mech_eap/util_radius.cpp @@ -142,7 +142,7 @@ isSecretAttributeP(uint32_t attribute) } static bool -isHiddenAttributeP(uint16_t attrid, uint16_t vendor) +isInternalAttributeP(uint16_t attrid, uint16_t vendor) { bool ret = false; @@ -161,9 +161,9 @@ isHiddenAttributeP(uint16_t attrid, uint16_t vendor) } static bool -isHiddenAttributeP(uint32_t attribute) +isInternalAttributeP(uint32_t attribute) { - return isHiddenAttributeP(ATTRID(attribute), VENDOR(attribute)); + return isInternalAttributeP(ATTRID(attribute), VENDOR(attribute)); } /* @@ -196,7 +196,8 @@ copyAvps(const VALUE_PAIR *src) } bool -gss_eap_radius_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute, void *data) const +gss_eap_radius_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAttribute, + void *data) const { VALUE_PAIR *vp; std::vector seen; @@ -205,7 +206,8 @@ gss_eap_radius_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addA gss_buffer_desc attribute; char attrid[64]; - if (isHiddenAttributeP(vp->attribute)) + /* Don't advertise attributes that are internal to the GSS-EAP mechanism */ + if (isInternalAttributeP(vp->attribute)) continue; if (alreadyAddedAttributeP(seen, vp)) @@ -264,7 +266,7 @@ gss_eap_radius_attr_provider::setAttribute(int complete, OM_uint32 major = GSS_S_UNAVAILABLE, minor; if (!isSecretAttributeP(attrid) && - !isHiddenAttributeP(attrid)) { + !isInternalAttributeP(attrid)) { deleteAttribute(attrid); major = gssEapRadiusAddAvp(&minor, &m_vps, @@ -291,7 +293,7 @@ gss_eap_radius_attr_provider::setAttribute(int complete, bool gss_eap_radius_attr_provider::deleteAttribute(uint32_t attrid) { - if (isSecretAttributeP(attrid) || isHiddenAttributeP(attrid) || + if (isSecretAttributeP(attrid) || isInternalAttributeP(attrid) || pairfind(m_vps, attrid) == NULL) return false; @@ -342,9 +344,6 @@ gss_eap_radius_attr_provider::getAttribute(uint32_t attrid, *more = 0; - if (isHiddenAttributeP(attrid)) - return false; - if (i == -1) i = 0; -- 2.1.4