From: Amos Jeffries Date: Sat, 3 Mar 2012 23:34:13 +0000 (-0700) Subject: Bug 3490: Crash writing Apache Common and Referer/Username logs X-Git-Tag: SQUID_3_2_0_16~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93f5e33bb4c86798e532e781a59089961498974c;p=thirdparty%2Fsquid.git Bug 3490: Crash writing Apache Common and Referer/Username logs --- diff --git a/src/log/FormatHttpdCombined.cc b/src/log/FormatHttpdCombined.cc index 573c82bcb9..67374ae212 100644 --- a/src/log/FormatHttpdCombined.cc +++ b/src/log/FormatHttpdCombined.cc @@ -48,11 +48,17 @@ Log::Format::HttpdCombined(AccessLogEntry * al, Logfile * logfile) const char *user_auth = ::Format::QuoteUrlEncodeUsername(al->cache.authuser); - const char *referer = al->request->header.getStr(HDR_REFERER); + const char *referer = NULL; + const char *agent = NULL; + + if (al && al->request) { + referer = al->request->header.getStr(HDR_REFERER); + agent = al->request->header.getStr(HDR_USER_AGENT); + } + if (!referer || *referer == '\0') referer = "-"; - const char *agent = al->request->header.getStr(HDR_USER_AGENT); if (!agent || *agent == '\0') agent = "-"; diff --git a/src/log/FormatSquidReferer.cc b/src/log/FormatSquidReferer.cc index 16f8b3d17b..a498af9b49 100644 --- a/src/log/FormatSquidReferer.cc +++ b/src/log/FormatSquidReferer.cc @@ -43,6 +43,10 @@ void Log::Format::SquidReferer(AccessLogEntry *al, Logfile *logfile) { + // do not log unless there is something to be displayed + if (!al || !al->request) + return; + const char *referer = al->request->header.getStr(HDR_REFERER); // do not log unless there is something to be displayed diff --git a/src/log/FormatSquidUseragent.cc b/src/log/FormatSquidUseragent.cc index 9eb825006f..470629e1f4 100644 --- a/src/log/FormatSquidUseragent.cc +++ b/src/log/FormatSquidUseragent.cc @@ -43,6 +43,10 @@ void Log::Format::SquidUserAgent(AccessLogEntry * al, Logfile * logfile) { + // do not log unless there is something to be displayed. + if (!al || !al->request) + return; + const char *agent = al->request->header.getStr(HDR_USER_AGENT); // do not log unless there is something to be displayed.