You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2016/10/12 14:10:48 UTC

[trafficserver] branch master updated: TS-3204: Crash when body_factory file is empty

This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/trafficserver.git

The following commit(s) were added to refs/heads/master by this push:
       new  5f2e77e   TS-3204: Crash when body_factory file is empty
5f2e77e is described below

commit 5f2e77eaf91de68c1fbf761fd1abf4808d048068
Author: Jari Alhonen <ja...@gmail.com>
AuthorDate: Tue Oct 4 09:18:05 2016 +0800

    TS-3204: Crash when body_factory file is empty
    
    Set internal buffer to null for empty files to not follow the
    crash-prone execution path.
---
 proxy/http/HttpTransact.cc | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 6382edb..a16f9e8 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -8291,6 +8291,10 @@ HttpTransact::build_error_response(State *s, HTTPStatus status_code, const char
   // After the body factory is called, a new "body" is allocated, and we must replace it. It is
   // unfortunate that there's no way to avoid this fabrication even when there is no substitutions...
   s->free_internal_msg_buffer();
+  if (len == 0) {
+    // If the file is empty, we may have a malloc(1) buffer. Release it.
+    new_msg = (char *)ats_free_null(new_msg);
+  }
   s->internal_msg_buffer                     = new_msg;
   s->internal_msg_buffer_size                = len;
   s->internal_msg_buffer_fast_allocator_size = -1;

-- 
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].