X-Git-Url: http://www.project-moonshot.org/gitweb/?p=freeradius.git;a=blobdiff_plain;f=src%2Flib%2Fradius.c;h=359756a2108c15a7de309c22d61240311aefd6c0;hp=37757a8e046afe5df4bc46c62e8db175acec29df;hb=9960563934a7da222528a1d82224aecc207c8aa8;hpb=63e8efeacb45c875082899883760f32017d15fa3 diff --git a/src/lib/radius.c b/src/lib/radius.c index 37757a8..359756a 100644 --- a/src/lib/radius.c +++ b/src/lib/radius.c @@ -2881,8 +2881,11 @@ VALUE_PAIR *rad_attr2vp(const RADIUS_PACKET *packet, DICT_ATTR *da; da = dict_attrbyvalue(attribute, VENDORPEC_EXTENDED); - if (da && (da->flags.extended || da->flags.extended_flags)) { + if (da) { /* flags.extended MUST be set */ + /* + * MUST have at least an "extended type" octet. + */ if (length == 0) return NULL; attribute |= (data[0] << fr_wimax_shift[1]); @@ -2917,6 +2920,11 @@ VALUE_PAIR *rad_attr2vp(const RADIUS_PACKET *packet, attribute, length, data); } } + + /* + * We could avoid another dictionary lookup here + * by using pairalloc(da), but it's not serious... + */ } vp = paircreate(attribute, vendor, PW_TYPE_OCTETS); if (!vp) return NULL;