diff options
| -rw-r--r-- | source3/lib/messages.c | 7 | ||||
| -rw-r--r-- | source3/lib/util.c | 3 | ||||
| -rw-r--r-- | source3/nmbd/asyncdns.c | 5 | ||||
| -rw-r--r-- | source3/web/startstop.c | 4 | 
4 files changed, 15 insertions, 4 deletions
diff --git a/source3/lib/messages.c b/source3/lib/messages.c index 642caafac4..b745cbaf8b 100644 --- a/source3/lib/messages.c +++ b/source3/lib/messages.c @@ -144,6 +144,9 @@ static TDB_DATA message_key_pid(pid_t pid)  static BOOL message_notify(pid_t pid)  { +	/* Doing kill with a non-positive pid causes messages to be +	 * sent to places we don't want. */ +	SMB_ASSERT(pid > 0);  	if (kill(pid, SIGUSR1) == -1) {  		if (errno == ESRCH) {  			DEBUG(2,("pid %d doesn't exist - deleting messages record\n", (int)pid)); @@ -174,6 +177,10 @@ BOOL message_send_pid(pid_t pid, int msg_type, const void *buf, size_t len,  	rec.src = sys_getpid();  	rec.len = len; +	/* Doing kill with a non-positive pid causes messages to be +	 * sent to places we don't want. */ +	SMB_ASSERT(pid > 0); +  	kbuf = message_key_pid(pid);  	/* lock the record for the destination */ diff --git a/source3/lib/util.c b/source3/lib/util.c index 8867d37d57..a2f8c086e8 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -1034,6 +1034,9 @@ check if a process exists. Does this work on all unixes?  BOOL process_exists(pid_t pid)  { +	/* Doing kill with a non-positive pid causes messages to be +	 * sent to places we don't want. */ +	SMB_ASSERT(pid > 0);  	return(kill(pid,0) == 0 || errno != ESRCH);  } diff --git a/source3/nmbd/asyncdns.c b/source3/nmbd/asyncdns.c index c5ff718836..6c2f8de3b1 100644 --- a/source3/nmbd/asyncdns.c +++ b/source3/nmbd/asyncdns.c @@ -120,8 +120,9 @@ static void sig_term(int sig)  void kill_async_dns_child(void)  { -  if(child_pid != 0 && child_pid != -1) -    kill(child_pid, SIGTERM); +	if (child_pid > 0) { +		kill(child_pid, SIGTERM); +	}  }  /*************************************************************************** diff --git a/source3/web/startstop.c b/source3/web/startstop.c index 27ee7dd96e..c56320c962 100644 --- a/source3/web/startstop.c +++ b/source3/web/startstop.c @@ -75,7 +75,7 @@ void stop_smbd(void)  	if (geteuid() != 0) return; -	if (pid == 0) return; +	if (pid <= 0) return;  	kill(pid, SIGTERM);  } @@ -87,7 +87,7 @@ void stop_nmbd(void)  	if (geteuid() != 0) return; -	if (pid == 0) return; +	if (pid <= 0) return;  	kill(pid, SIGTERM);  }  | 
