trafficserver-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bc...@apache.org
Subject [trafficserver] 02/03: heap use after free
Date Thu, 13 Sep 2018 16:02:47 GMT
This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch 8.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit d498db21f0c43bac0ae5fb6cf2317de8602d7f27
Author: Fei Deng <duke8253@gmail.com>
AuthorDate: Wed Sep 12 10:03:19 2018 -0500

    heap use after free
    
    (cherry picked from commit 480ba87c17badad20a20d85f88c8a992b893cfe0)
---
 proxy/http/HttpTransact.cc | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 46f6d53..e4271ec 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -8159,7 +8159,12 @@ HttpTransact::client_result_stat(State *s, ink_hrtime total_time, ink_hrtime
req
   ///////////////////////////////////////////////////////
   // don't count errors we generated as hits or misses //
   ///////////////////////////////////////////////////////
-  if ((s->source == SOURCE_INTERNAL) && (s->hdr_info.client_response.status_get()
>= 400)) {
+  int client_response_status = HTTP_STATUS_NONE;
+  if (s->hdr_info.client_response.valid()) {
+    client_response_status = s->hdr_info.client_response.status_get();
+  }
+
+  if ((s->source == SOURCE_INTERNAL) && client_response_status >= 400) {
     client_transaction_result = CLIENT_TRANSACTION_RESULT_ERROR_OTHER;
   }
 
@@ -8254,9 +8259,8 @@ HttpTransact::client_result_stat(State *s, ink_hrtime total_time, ink_hrtime
req
   }
   // Count the status codes, assuming the client didn't abort (i.e. there is an m_http)
   if ((s->source != SOURCE_NONE) && (s->client_info.abort == DIDNOT_ABORT))
{
-    int status_code = s->hdr_info.client_response.status_get();
 
-    switch (status_code) {
+    switch (client_response_status) {
     case 100:
       HTTP_INCREMENT_DYN_STAT(http_response_status_100_count_stat);
       break;
@@ -8377,7 +8381,7 @@ HttpTransact::client_result_stat(State *s, ink_hrtime total_time, ink_hrtime
req
     default:
       break;
     }
-    switch (status_code / 100) {
+    switch (client_response_status / 100) {
     case 1:
       HTTP_INCREMENT_DYN_STAT(http_response_status_1xx_count_stat);
       break;


Mime
View raw message