summaryrefslogtreecommitdiff
path: root/source4/smbd
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2012-06-28 11:04:25 +0930
committerRusty Russell <rusty@rustcorp.com.au>2012-06-28 05:19:24 +0200
commitf80e399ab26ea23ba258f885cec7c6c28c62baaa (patch)
treebe19d66212b5768a4503e24fcde9a4058c7bd87d /source4/smbd
parent0a1aaca1bd88ae83f287511a6a510c5a886dc60b (diff)
downloadsamba-f80e399ab26ea23ba258f885cec7c6c28c62baaa.tar.gz
samba-f80e399ab26ea23ba258f885cec7c6c28c62baaa.tar.bz2
samba-f80e399ab26ea23ba258f885cec7c6c28c62baaa.zip
source4/smbd/pidfile: don't panic if pid file is corrupt.
In particular, on a virtual machine after a forced reboot, it contained "Ille" instead of a valid PID. Given it was the right length, I'm assuming it was filesystem corruption. process_exists_by_pid() then panics, when given a pid < 1. Reported-by: lostogre on #samba-technical Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User(master): Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date(master): Thu Jun 28 05:19:24 CEST 2012 on sn-devel-104
Diffstat (limited to 'source4/smbd')
-rw-r--r--source4/smbd/pidfile.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/source4/smbd/pidfile.c b/source4/smbd/pidfile.c
index b7d1c27cd0..32d3964302 100644
--- a/source4/smbd/pidfile.c
+++ b/source4/smbd/pidfile.c
@@ -57,6 +57,9 @@ pid_t pidfile_pid(const char *piddir, const char *name)
}
ret = (pid_t)atoi(pidstr);
+ if (ret <= 0) {
+ goto noproc;
+ }
if (!process_exists_by_pid(ret)) {
goto noproc;