if (filters_done && !packets_done) {
REDEBUG("Differing number of packets/filters in %s:%s "
- "(too many requests))", files->packets, files->filters);
+ "(too many requests)", files->packets, files->filters);
goto error;
}
if (!filters_done && packets_done) {
REDEBUG("Differing number of packets/filters in %s:%s "
- "(too many filters))", files->packets, files->filters);
+ "(too many filters)", files->packets, files->filters);
goto error;
}
vp = fr_pair_find_by_da(&request->filter, NULL, attr_packet_type);
if (vp) {
+ if (!FR_RADIUS_PACKET_CODE_VALID(vp->vp_uint32)) {
+ REDEBUG("Invalid filter code %u in %s:%s", vp->vp_uint32,
+ files->packets, files->filters);
+ goto error;
+ }
+
request->filter_code = vp->vp_uint32;
fr_pair_delete(&request->filter, vp);
}
if (*coa_filter_done && !*coa_reply_done) {
REDEBUG("Differing number of replies/filters in %s:%s "
- "(too many replies))", reply_filename, filter_filename);
+ "(too many replies)", reply_filename, filter_filename);
goto error;
}
if (!*coa_filter_done && *coa_reply_done) {
REDEBUG("Differing number of replies/filters in %s:%s "
- "(too many filters))", reply_filename, filter_filename);
+ "(too many filters)", reply_filename, filter_filename);
goto error;
}
vp = fr_pair_find_by_da(&request->filter, NULL, attr_packet_type);
if (vp) {
+ if (!FR_RADIUS_PACKET_CODE_VALID(vp->vp_uint32)) {
+ REDEBUG("Invalid filter code %u in %s:%s", vp->vp_uint32,
+ files->packets, files->filters);
+ goto error;
+ }
+
request->filter_code = vp->vp_uint32;
fr_pair_delete(&request->filter, vp);
}