Browse Source

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
OPENBSD_5_8
deraadt 9 years ago
parent
commit
e808a4913f
1 changed files with 8 additions and 4 deletions
  1. +8
    -4
      src/usr.sbin/ntpd/constraint.c

+ 8
- 4
src/usr.sbin/ntpd/constraint.c View File

@ -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 <reyk@openbsd.org> * Copyright (c) 2015 Reyk Floeter <reyk@openbsd.org>
@ -250,7 +250,7 @@ constraint_check_child(void)
{ {
struct constraint *cstr; struct constraint *cstr;
int status; int status;
int fail;
int fail, sig;
pid_t pid; pid_t pid;
do { do {
@ -258,9 +258,9 @@ constraint_check_child(void)
if (pid <= 0) if (pid <= 0)
continue; continue;
fail = 0;
fail = sig = 0;
if (WIFSIGNALED(status)) { if (WIFSIGNALED(status)) {
fail = 1;
sig = WTERMSIG(status);
} else if (WIFEXITED(status)) { } else if (WIFEXITED(status)) {
if (WEXITSTATUS(status) != 0) if (WEXITSTATUS(status) != 0)
fail = 1; fail = 1;
@ -268,6 +268,10 @@ constraint_check_child(void)
fatalx("unexpected cause of SIGCHLD"); fatalx("unexpected cause of SIGCHLD");
if ((cstr = constraint_bypid(pid)) != NULL) { if ((cstr = constraint_bypid(pid)) != NULL) {
if (sig)
fatalx("constraint %s, signal %d",
log_sockaddr((struct sockaddr *)
&cstr->addr->ss), sig);
if (fail) { if (fail) {
log_debug("no constraint reply from %s" log_debug("no constraint reply from %s"
" received in time, next query %ds", " received in time, next query %ds",


Loading…
Cancel
Save