mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-02 08:42:48 +00:00
ktrace: Record signal violations with KTR_CAPFAIL
Report the delivery of signals to processes other than self while Capsicum violation tracing with CAPFAIL_SIGNAL. Reviewed by: markj Approved by: markj (mentor) MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D40679
This commit is contained in:
parent
05296a0ff6
commit
6a4616a529
@ -27,6 +27,8 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "opt_ktrace.h"
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/_unrhdr.h>
|
#include <sys/_unrhdr.h>
|
||||||
#include <sys/systm.h>
|
#include <sys/systm.h>
|
||||||
@ -542,6 +544,8 @@ reap_kill(struct thread *td, struct proc *p, void *data)
|
|||||||
|
|
||||||
rk = data;
|
rk = data;
|
||||||
sx_assert(&proctree_lock, SX_LOCKED);
|
sx_assert(&proctree_lock, SX_LOCKED);
|
||||||
|
if (CAP_TRACING(td))
|
||||||
|
ktrcapfail(CAPFAIL_SIGNAL, &rk->rk_sig);
|
||||||
if (IN_CAPABILITY_MODE(td))
|
if (IN_CAPABILITY_MODE(td))
|
||||||
return (ECAPMODE);
|
return (ECAPMODE);
|
||||||
if (rk->rk_sig <= 0 || rk->rk_sig > _SIG_MAXSIG ||
|
if (rk->rk_sig <= 0 || rk->rk_sig > _SIG_MAXSIG ||
|
||||||
|
@ -1906,8 +1906,12 @@ kern_kill(struct thread *td, pid_t pid, int signum)
|
|||||||
* The main rationale behind this is that abort(3) is implemented as
|
* The main rationale behind this is that abort(3) is implemented as
|
||||||
* kill(getpid(), SIGABRT).
|
* kill(getpid(), SIGABRT).
|
||||||
*/
|
*/
|
||||||
if (IN_CAPABILITY_MODE(td) && pid != td->td_proc->p_pid)
|
if (pid != td->td_proc->p_pid) {
|
||||||
return (ECAPMODE);
|
if (CAP_TRACING(td))
|
||||||
|
ktrcapfail(CAPFAIL_SIGNAL, &signum);
|
||||||
|
if (IN_CAPABILITY_MODE(td))
|
||||||
|
return (ECAPMODE);
|
||||||
|
}
|
||||||
|
|
||||||
AUDIT_ARG_SIGNUM(signum);
|
AUDIT_ARG_SIGNUM(signum);
|
||||||
AUDIT_ARG_PID(pid);
|
AUDIT_ARG_PID(pid);
|
||||||
|
Loading…
Reference in New Issue
Block a user