]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix potential ICAP null pointer dreference after rev.14838
authorEduard Bagdasaryan <eduard.bagdasaryan@measurement-factory.com>
Fri, 16 Sep 2016 18:36:00 +0000 (06:36 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Fri, 16 Sep 2016 18:36:00 +0000 (06:36 +1200)
Adjusted Adaptation::Icap::ModXact::finalizeLogInfo(), fixing possible
"Null pointer dereference".

 Detected by Coverity Scan. Issue 1372977

src/adaptation/icap/ModXact.cc

index 0bf3c1c77e185d5926b130de8137a3a0978fa487..89ac65359aa8fca7a839fdf025e1c548aeb016f9 100644 (file)
@@ -1267,7 +1267,7 @@ void Adaptation::Icap::ModXact::finalizeLogInfo()
 {
     HttpRequest *adapted_request_ = nullptr;
     HttpReply *adapted_reply_ = nullptr;
-    HttpRequest *virgin_request_ = (virgin.cause ? virgin.cause : dynamic_cast<HttpRequest*>(virgin.header));
+    HttpRequest *virgin_request_ = const_cast<HttpRequest*>(&virginRequest());
     if (!(adapted_request_ = dynamic_cast<HttpRequest*>(adapted.header))) {
         // if the request was not adapted, use virgin request to simplify
         // the code further below
@@ -1275,7 +1275,7 @@ void Adaptation::Icap::ModXact::finalizeLogInfo()
         adapted_reply_ = dynamic_cast<HttpReply*>(adapted.header);
     }
 
-    Adaptation::Icap::History::Pointer h = (virgin_request_ ? virgin_request_->icapHistory() : NULL);
+    Adaptation::Icap::History::Pointer h = virgin_request_->icapHistory();
     Must(h != NULL); // ICAPXaction::maybeLog calls only if there is a log
     al.icp.opcode = ICP_INVALID;
     al.url = h->log_uri.termedBuf();