HomeFreeBSD

Ensure that sigaction flags for signal, which disposition is reset to

Description

Ensure that sigaction flags for signal, which disposition is reset to
ignored or default, are not leaking. Apparently, there exists code
which relies on SA_SIGINFO not reported for SIG_DFL or SIG_IGN.

In kern_sigaction, ignore flags when resetting. Encapsulate the flag
and disposition testing into helper sigact_flag_test().

On exec, and when delivering signal with SA_RESETHAND flag set,
signals are reset automatically. Use new helper sigdflt(), which
removes duplicated code and corrects all flag bits for the signal.

For proc0, set sigintr bit for all ignored signals. Ignored signals
are consumed in tdsendsignal() and not delivered to the victim thread
at all.

Reported and tested by: royger
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

Details

Provenance
kibAuthored on
Parents
rS270320: Check the validity of struct sigaction sa_flags value, reject unknown
Branches
Unknown
Tags
Unknown

Event Timeline