#ifndef lint
static const char rcsid[] _U_ =
- "$Id: print-radius.c,v 1.24 2004-01-07 08:00:52 hannes Exp $";
+ "$Id: print-radius.c,v 1.27 2004-07-21 21:45:47 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
length-=4;
printf("Vendor: %s (%u)",
- tok2str(oui_values,"Unknown",vendor_id),
+ tok2str(smi_values,"Unknown",vendor_id),
vendor_id);
while (length >= 2) {
+ if(!TTEST2(*data, 2))
+ return;
+
vendor_type = *(data);
vendor_length = *(data+1);
+
data+=2;
+ if(!TTEST2(*data, vendor_length))
+ return;
+
printf("\n\t Vendor Attribute: %u, Length: %u, Value: ",
vendor_type,
vendor_length);
while (length > 0)
{
- if (rad_attr->len == 0)
+ if (rad_attr->len == 0 && rad_attr->type < (TAM_SIZE(attr_type)-1))
{
printf("\n\t %s Attribute (%u), zero-length",
attr_type[rad_attr->type].name,
rad_attr->type);
return;
}
- if ( rad_attr->len <= length )
+ if ( rad_attr->len <= length && rad_attr->type < (TAM_SIZE(attr_type)-1))
{
printf("\n\t %s Attribute (%u), length: %u, Value: ",
attr_type[rad_attr->type].name,
printf(" [|radius]");
return;
}
- /* do we want to see an additionally hexdump ? */
- if (vflag> 1)
- print_unknown_data((char *)rad_attr+2,"\n\t ",(rad_attr->len)-2);
+ /* do we also want to see a hex dump ? */
+ if (vflag> 1 && rad_attr->len >= 2)
+ print_unknown_data((u_char *)rad_attr+2,"\n\t ",(rad_attr->len)-2);
length-=(rad_attr->len);
rad_attr = (struct radius_attr *)( ((char *)(rad_attr))+rad_attr->len);