diff --git a/ChangeLog b/ChangeLog index cd99664cd..d02ba367e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +20061101 + - (dtucker) [openbsd-compat/port-solaris.c] Bug #1255: Make only hwerr + events fatal in Solaris process contract support and tell it to signal + only processes in the same process group when something happens. + Based on information from andrew.benham at thus.net and similar to + a patch from Chad Mynhier. ok djm@ + 20061027 - (djm) [auth.c] gc some dead code @@ -2571,4 +2578,4 @@ OpenServer 6 and add osr5bigcrypt support so when someone migrates passwords between UnixWare and OpenServer they will still work. OK dtucker@ -$Id: ChangeLog,v 1.4580 2006/10/27 15:10:15 djm Exp $ +$Id: ChangeLog,v 1.4581 2006/10/31 23:28:49 dtucker Exp $ diff --git a/openbsd-compat/port-solaris.c b/openbsd-compat/port-solaris.c index f57433e78..2ab64d487 100644 --- a/openbsd-compat/port-solaris.c +++ b/openbsd-compat/port-solaris.c @@ -1,4 +1,4 @@ -/* $Id: port-solaris.c,v 1.2 2006/09/01 05:38:41 djm Exp $ */ +/* $Id: port-solaris.c,v 1.3 2006/10/31 23:28:49 dtucker Exp $ */ /* * Copyright (c) 2006 Chad Mynhier. @@ -86,18 +86,27 @@ solaris_contract_pre_fork(void) debug2("%s: setting up process contract template on fd %d", __func__, tmpl_fd); - /* We have to set certain attributes before activating the template */ - if (ct_pr_tmpl_set_fatal(tmpl_fd, - CT_PR_EV_HWERR|CT_PR_EV_SIGNAL|CT_PR_EV_CORE) != 0) { + /* First we set the template parameters and event sets. */ + if (ct_pr_tmpl_set_param(tmpl_fd, CT_PR_PGRPONLY) != 0) { + error("%s: Error setting process contract parameter set " + "(pgrponly): %s", __func__, strerror(errno)); + goto fail; + } + if (ct_pr_tmpl_set_fatal(tmpl_fd, CT_PR_EV_HWERR) != 0) { error("%s: Error setting process contract template " "fatal events: %s", __func__, strerror(errno)); goto fail; } - if (ct_tmpl_set_critical(tmpl_fd, CT_PR_EV_HWERR) != 0) { + if (ct_tmpl_set_critical(tmpl_fd, 0) != 0) { error("%s: Error setting process contract template " "critical events: %s", __func__, strerror(errno)); goto fail; } + if (ct_tmpl_set_informative(tmpl_fd, CT_PR_EV_HWERR) != 0) { + error("%s: Error setting process contract template " + "informative events: %s", __func__, strerror(errno)); + goto fail; + } /* Now make this the active template for this process. */ if (ct_tmpl_activate(tmpl_fd) != 0) {