diff -Nur freeradius-1.1.3-orig/src/lib/valuepair.c freeradius-1.1.3/src/lib/valuepair.c --- freeradius-1.1.3-orig/src/lib/valuepair.c 2006-05-03 19:40:58.000000000 +0200 +++ freeradius-1.1.3/src/lib/valuepair.c 2006-11-26 21:26:05.000000000 +0100 @@ -699,29 +699,29 @@ if (s) free(s); vp->length = 4; break; + case PW_TYPE_INTEGER: /* - * If it starts with a digit, it must - * be a number (or a range). - * * Note that ALL integers are unsigned! */ - if (isdigit((int) *value)) { - vp->lvalue = (uint32_t) strtoul(value, NULL, 10); + vp->lvalue = (uint32_t) strtoul(value, &p, 10); + if (!*p) { vp->length = 4; + break; } + /* * Look for the named value for the given * attribute. */ - else if ((dval = dict_valbyname(vp->attribute, value)) == NULL) { + if ((dval = dict_valbyname(vp->attribute, value)) == NULL) { librad_log("Unknown value %s for attribute %s", value, vp->name); return NULL; - } else { - vp->lvalue = dval->value; - vp->length = 4; } + + vp->lvalue = dval->value; + vp->length = 4; break; case PW_TYPE_DATE: