HomeFreeBSD

pf: Fix panic on invalid DIOCRSETTFLAGS

Description

pf: Fix panic on invalid DIOCRSETTFLAGS

If during DIOCRSETTFLAGS pfrio_buffer is NULL copyin() will fault, which we're
not allowed to do with a lock held.
We must count the number of entries in the table and release the lock during
copyin(). Only then can we re-acquire the lock. Note that this is safe, because
pfr_set_tflags() will check if the table and entries exist.

This was discovered by a local syzcaller instance.

MFC after: 1 week
Event: Aberdeen hackathon 2019

Details

Provenance
kpAuthored on
Parents
rS346318: cap_fileargs: fix GCC build, don't shadow 'stat'
Branches
Unknown
Tags
Unknown