cleanup
[mech_eap.orig] / util_radius.cpp
index ff00f77..ac568a0 100644 (file)
@@ -144,16 +144,16 @@ isHiddenAttributeP(int attrid, int vendor)
     bool ret = false;
 
     switch (vendor) {
-    case RADIUS_VENDOR_ID_MICROSOFT:
+    case VENDOR_ID_MICROSOFT:
         switch (attrid) {
-        case RADIUS_VENDOR_ATTR_MS_MPPE_SEND_KEY:
-        case RADIUS_VENDOR_ATTR_MS_MPPE_RECV_KEY:
+        case VENDOR_ATTR_MS_MPPE_SEND_KEY:
+        case VENDOR_ATTR_MS_MPPE_RECV_KEY:
             ret = true;
             break;
         default:
             break;
         }
-    case RADIUS_VENDOR_ID_GSS_EAP:
+    case VENDOR_ID_UKERNA:
         ret = true;
         break;
     default:
@@ -171,25 +171,18 @@ 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;
-#ifndef RADIUS_STRING_ATTRS
         char attrid[64];
-#endif
         if (isHiddenAttributeP(ATTRID(vp->attribute), VENDOR(vp->attribute)))
             continue;
 
         if (alreadyAddedAttributeP(seen, vp))
             continue;
 
-#ifdef RADIUS_STRING_ATTRS
-        attribute.value = (void *)vp->name;
-        attribute.length = strlen(vp->name);
-#else
         snprintf(attrid, sizeof(attrid), "%s%d",
             (char *)radiusUrnPrefix.value, vp->attribute);
 
         attribute.value = attrid;
         attribute.length = strlen(attrid);
-#endif /* RADIUS_STRING_ATTRS */
 
         if (!addAttribute(this, &attribute, data))
             return false;
@@ -230,9 +223,13 @@ gss_eap_radius_attr_provider::getAttribute(const gss_buffer_t attr,
     duplicateBuffer(*attr, &strAttr);
     s = (char *)strAttr.value;
 
-    if (attr->length >= radiusUrnPrefix.length &&
-        memcmp(s, radiusUrnPrefix.value, radiusUrnPrefix.length) == 0) {
-        s += radiusUrnPrefix.length;
+    if (attr->length < radiusUrnPrefix.length ||
+        memcmp(s, radiusUrnPrefix.value, radiusUrnPrefix.length) != 0)
+        return false;
+
+    s += radiusUrnPrefix.length;
+
+    if (isdigit(*s)) {
         attrid = strtoul(s, NULL, 10);
     } else {
         d = rc_dict_findattr(m_rh, (char *)s);
@@ -667,3 +664,15 @@ gss_eap_radius_attr_provider::exportToBuffer(gss_buffer_t buffer) const
 
     assert(remain == 0);
 }
+
+time_t
+gss_eap_radius_attr_provider::getExpiryTime(void) const
+{
+    VALUE_PAIR *vp;
+
+    vp = rc_avpair_get(m_avps, PW_SESSION_TIMEOUT, 0);
+    if (vp == NULL || vp->lvalue == 0)
+        return 0;
+
+    return time(NULL) + vp->lvalue;
+}