From: Alex Rousskov Date: Fri, 24 May 2013 23:40:50 +0000 (-0600) Subject: Avoid segfaults on seriously malformed requests when ICAP logging is enabled. X-Git-Tag: SQUID_3_4_0_1~111 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7f0ceafca85183a1ad001fbe3f445bbee17bc557;p=thirdparty%2Fsquid.git Avoid segfaults on seriously malformed requests when ICAP logging is enabled. --- diff --git a/src/format/Format.cc b/src/format/Format.cc index 3b7d34f88a..604b463d6c 100644 --- a/src/format/Format.cc +++ b/src/format/Format.cc @@ -629,7 +629,7 @@ Format::Format::assemble(MemBuf &mb, const AccessLogEntry::Pointer &al, int logS break; case LFT_ICAP_REQ_HEADER_ELEM: - if (al->request) + if (al->icap.request) sb = al->icap.request->header.getByNameListMember(fmt->data.header.header, fmt->data.header.element, fmt->data.header.separator); out = sb.termedBuf(); @@ -1049,7 +1049,7 @@ Format::Format::assemble(MemBuf &mb, const AccessLogEntry::Pointer &al, int logS case LFT_NOTE: if (fmt->data.string) { #if USE_ADAPTATION - Adaptation::History::Pointer ah = al->request->adaptHistory(); + Adaptation::History::Pointer ah = al->request ? al->request->adaptHistory() : Adaptation::History::Pointer(); if (ah != NULL && ah->metaHeaders != NULL) { if (const char *meta = ah->metaHeaders->find(fmt->data.string)) sb.append(meta); @@ -1066,7 +1066,7 @@ Format::Format::assemble(MemBuf &mb, const AccessLogEntry::Pointer &al, int logS quote = 1; } else { #if USE_ADAPTATION - Adaptation::History::Pointer ah = al->request->adaptHistory(); + Adaptation::History::Pointer ah = al->request ? al->request->adaptHistory() : Adaptation::History::Pointer(); if (ah != NULL && ah->metaHeaders != NULL && !ah->metaHeaders->empty()) sb.append(ah->metaHeaders->toString()); #endif