From: serassio <> Date: Tue, 26 Apr 2005 00:43:00 +0000 (+0000) Subject: Bug #1157: PID file check error when chrooting X-Git-Tag: SQUID_3_0_PRE4~791 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1ee742a2faa86dc6f1dd0d70f91edcc23188fcd5;p=thirdparty%2Fsquid.git Bug #1157: PID file check error when chrooting Forward port of 2.5 patch --- diff --git a/src/tools.cc b/src/tools.cc index cbab3aabbc..1babe74926 100644 --- a/src/tools.cc +++ b/src/tools.cc @@ -1,6 +1,6 @@ /* - * $Id: tools.cc,v 1.254 2005/04/18 21:52:43 hno Exp $ + * $Id: tools.cc,v 1.255 2005/04/25 18:43:00 serassio Exp $ * * DEBUG: section 21 Misc Functions * AUTHOR: Harvest Derived @@ -774,6 +774,7 @@ readPidFile(void) { FILE *pid_fp = NULL; const char *f = Config.pidFilename; + char *chroot_f = NULL; pid_t pid = -1; int i; @@ -782,6 +783,13 @@ readPidFile(void) exit(1); } + if (Config.chroot_dir && geteuid() == 0) { + int len = strlen(Config.chroot_dir) + 1 + strlen(f) + 1; + chroot_f = (char *)xmalloc(strlen(Config.chroot_dir) + 1 + strlen(f) + 1); + snprintf(chroot_f, len, "%s/%s", Config.chroot_dir, f); + f = chroot_f; + } + pid_fp = fopen(f, "r"); if (pid_fp != NULL) { @@ -799,6 +807,7 @@ readPidFile(void) } } + safe_free(chroot_f); return pid; }