When the 'R' flag is used with a newsyslog.conf entry, some fields of

the corresponding struct sigwork_entry were left uninitialized,
potentially causing an early return from do_sigwork(). Ensure that these
fields are initialized, and handle the 'R' flag properly in
do_sigwork().

PR:		bin/175330
Reviewed by:	gad
Approved by:	rstone (co-mentor)
MFC after:	1 week
This commit is contained in:
Mark Johnston 2013-01-27 06:01:35 +00:00
parent 111a5d7c78
commit 3b58eef59e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=245961

View File

@ -1866,7 +1866,7 @@ do_sigwork(struct sigwork_entry *swork)
int kres, secs;
char *tmp;
if (!(swork->sw_pidok) || swork->sw_pid == 0)
if (swork->run_cmd == 0 && (!(swork->sw_pidok) || swork->sw_pid == 0))
return; /* no work to do... */
/*
@ -2078,6 +2078,8 @@ save_sigwork(const struct conf_entry *ent)
stmp->run_cmd = 0;
/* If this is a command to run we just set the flag and run command */
if (ent->flags & CE_PID2CMD) {
stmp->sw_pid = -1;
stmp->sw_pidok = 0;
stmp->run_cmd = 1;
} else {
set_swpid(stmp, ent);