From 274eec54e80cb90b8a09f524c8495efbaa46b45d Mon Sep 17 00:00:00 2001 From: Matthias Andree Date: Tue, 4 Jul 2006 10:01:51 +0000 Subject: If the lockfile ends before the process ID, treat it as stale and unlink it. Reported by Justin Pryzby, Debian Bug #376603. svn path=/branches/BRANCH_6-3/; revision=4862 --- lock.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lock.c') diff --git a/lock.c b/lock.c index 39351be1..c0290393 100644 --- a/lock.c +++ b/lock.c @@ -85,20 +85,21 @@ int fm_lock_state(void) if (ferror(lockfp)) { fprintf(stderr, GT_("fetchmail: error reading lockfile \"%s\": %s\n"), lockfile, strerror(errno)); + fclose(lockfp); /* not checking should be safe, file mode was "r" */ exit(PS_EXCLUDE); } + fclose(lockfp); /* not checking should be safe, file mode was "r" */ - if (args == 0 || kill(pid, 0) == -1) { + if (args == EOF || args == 0 || kill(pid, 0) == -1) { pid = 0; + + fprintf(stderr,GT_("fetchmail: removing stale lockfile\n")); if (unlink(lockfile)) { if (errno != ENOENT) { perror(lockfile); } - } else { - fprintf(stderr,GT_("fetchmail: removing stale lockfile\n")); } } - fclose(lockfp); /* not checking should be safe, file mode was "r" */ } else { pid = 0; if (errno != ENOENT) { -- cgit v1.2.3