From e808a4913fb45c87a5f0b251f725127c9561cd32 Mon Sep 17 00:00:00 2001 From: deraadt <> Date: Thu, 28 May 2015 21:34:36 +0000 Subject: [PATCH] detect crashes from constraint sub-processes, instead of ignoring them. if this happens, we want to tear down all of ntpd, so that people will report it, any such bug can be found, and fixed. ok bcook --- src/usr.sbin/ntpd/constraint.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/usr.sbin/ntpd/constraint.c b/src/usr.sbin/ntpd/constraint.c index 2e48cf7f..4b35a67f 100644 --- a/src/usr.sbin/ntpd/constraint.c +++ b/src/usr.sbin/ntpd/constraint.c @@ -1,4 +1,4 @@ -/* $OpenBSD: constraint.c,v 1.11 2015/05/21 14:24:43 reyk Exp $ */ +/* $OpenBSD: constraint.c,v 1.12 2015/05/28 21:34:36 deraadt Exp $ */ /* * Copyright (c) 2015 Reyk Floeter @@ -250,7 +250,7 @@ constraint_check_child(void) { struct constraint *cstr; int status; - int fail; + int fail, sig; pid_t pid; do { @@ -258,9 +258,9 @@ constraint_check_child(void) if (pid <= 0) continue; - fail = 0; + fail = sig = 0; if (WIFSIGNALED(status)) { - fail = 1; + sig = WTERMSIG(status); } else if (WIFEXITED(status)) { if (WEXITSTATUS(status) != 0) fail = 1; @@ -268,6 +268,10 @@ constraint_check_child(void) fatalx("unexpected cause of SIGCHLD"); if ((cstr = constraint_bypid(pid)) != NULL) { + if (sig) + fatalx("constraint %s, signal %d", + log_sockaddr((struct sockaddr *) + &cstr->addr->ss), sig); if (fail) { log_debug("no constraint reply from %s" " received in time, next query %ds",