mirror of
https://github.com/opnsense/src.git
synced 2026-07-16 12:33:07 -04:00
pf: Fix error handling in pf_handle_get_tstats()
- pfr_table_count() can return an error.
- We must check for failure from mallocarray(M_NOWAIT).
Fixes: 9e8d2962aa ("pf: convert DIOCRGETTSTATS to netlink")
Reported by: Kevin Day <kevin@your.org>
Reviewed by: kp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D54094
(cherry picked from commit 0f0662c6b4cc611d6e400f823656f908ffce5c04)
This commit is contained in:
parent
f7cd3d5368
commit
1910f18b00
1 changed files with 10 additions and 0 deletions
|
|
@ -1950,8 +1950,18 @@ pf_handle_get_tstats(struct nlmsghdr *hdr, struct nl_pstate *npt)
|
|||
PF_RULES_RLOCK();
|
||||
|
||||
n = pfr_table_count(&attrs.pfrio_table, attrs.pfrio_flags);
|
||||
if (n < 0) {
|
||||
PF_RULES_RUNLOCK();
|
||||
PF_TABLE_STATS_UNLOCK();
|
||||
return (EINVAL);
|
||||
}
|
||||
pfrtstats = mallocarray(n,
|
||||
sizeof(struct pfr_tstats), M_PF, M_NOWAIT | M_ZERO);
|
||||
if (pfrtstats == NULL) {
|
||||
PF_RULES_RUNLOCK();
|
||||
PF_TABLE_STATS_UNLOCK();
|
||||
return (ENOMEM);
|
||||
}
|
||||
|
||||
error = pfr_get_tstats(&attrs.pfrio_table, pfrtstats,
|
||||
&n, attrs.pfrio_flags | PFR_FLAG_USERIOCTL);
|
||||
|
|
|
|||
Loading…
Reference in a new issue