#include "gssapiP_eap.h"
+static gss_buffer_desc radiusUrnPrefix = {
+ sizeof("urn:radius:") - 1,
+ (void *)"urn:radius:"
+};
+
VALUE_PAIR *
gss_eap_radius_attr_provider::copyAvps(const VALUE_PAIR *src)
{
attribute.value = (void *)vp->name;
attribute.length = strlen(vp->name);
#else
- snprintf(attrid, sizeof(attrid), "%d", vp->attribute);
+ snprintf(attrid, sizeof(attrid), "%s%d",
+ (char *)radiusUrnPrefix.value, vp->attribute);
attribute.value = attrid;
attribute.length = strlen(attrid);
char *s;
/* XXX vendor */
-
duplicateBuffer(*attr, &strAttr);
s = (char *)strAttr.value;
- if (isdigit(((char *)strAttr.value)[0])) {
+ if (attr->length >= radiusUrnPrefix.length &&
+ memcmp(s, radiusUrnPrefix.value, radiusUrnPrefix.length) == 0) {
+ s += radiusUrnPrefix.length;
attrid = strtoul(s, NULL, 10);
} else {
d = rc_dict_findattr(m_rh, (char *)s);