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

masaori pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 344950e997 LSan: Fix memory leak of test_proxy_hdrs (#10542)
344950e997 is described below

commit 344950e99736681e58e6a2455fb306862570c2ed
Author: Masaori Koshiba <masa...@apache.org>
AuthorDate: Tue Oct 17 07:27:36 2023 +0900

    LSan: Fix memory leak of test_proxy_hdrs (#10542)
    
    * LSan: Fix memory leak of test_proxy_hdrs
    
    * Suppress test_http_hdr_print_and_copy_aux leak
---
 ci/asan_leak_suppression/unit_tests.txt    |  2 ++
 proxy/hdrs/Makefile.am                     |  1 +
 proxy/hdrs/unit_tests/test_Hdrs.cc         |  5 +++++
 proxy/http/unit_tests/test_HttpTransact.cc | 21 +++++++++++++++++++++
 4 files changed, 29 insertions(+)

diff --git a/ci/asan_leak_suppression/unit_tests.txt 
b/ci/asan_leak_suppression/unit_tests.txt
index f1848dacd5..da34e83c61 100644
--- a/ci/asan_leak_suppression/unit_tests.txt
+++ b/ci/asan_leak_suppression/unit_tests.txt
@@ -6,3 +6,5 @@ leak:CRYPTO_realloc
 leak:ConsCell
 # PR#10295
 leak:pcre_jit_stack_alloc
+# PR#10541
+leak:test_http_hdr_print_and_copy_aux
diff --git a/proxy/hdrs/Makefile.am b/proxy/hdrs/Makefile.am
index 670317c1b2..b1691d6610 100644
--- a/proxy/hdrs/Makefile.am
+++ b/proxy/hdrs/Makefile.am
@@ -72,6 +72,7 @@ check_PROGRAMS = \
        test_XPACK
 
 TESTS = $(check_PROGRAMS)
+TESTS_ENVIRONMENT = 
LSAN_OPTIONS=suppressions=$(abs_top_srcdir)/ci/asan_leak_suppression/unit_tests.txt
 
 test_proxy_hdrs_CPPFLAGS = $(AM_CPPFLAGS) \
        -I$(abs_top_srcdir)/lib/catch2
diff --git a/proxy/hdrs/unit_tests/test_Hdrs.cc 
b/proxy/hdrs/unit_tests/test_Hdrs.cc
index 4f70c2d063..265edb0993 100644
--- a/proxy/hdrs/unit_tests/test_Hdrs.cc
+++ b/proxy/hdrs/unit_tests/test_Hdrs.cc
@@ -32,6 +32,7 @@
 #include "tscore/Regex.h"
 #include "tscore/ink_time.h"
 #include "tscore/Random.h"
+#include "tscpp/util/PostScript.h"
 
 #include "catch.hpp"
 
@@ -280,6 +281,7 @@ test_http_hdr_null_char(int testnum, const char *request, 
const char * /*request
 {
   int err;
   HTTPHdr hdr;
+  ts::PostScript hdr_defer([&]() -> void { hdr.destroy(); });
   HTTPParser parser;
   const char *start;
   char cpy_buf[2048];
@@ -308,6 +310,7 @@ test_http_hdr_null_char(int testnum, const char *request, 
const char * /*request
       break;
     }
   }
+
   if (err != PARSE_RESULT_ERROR) {
     std::printf("FAILED: (test #%d) no parse error parsing request with null 
char\n", testnum);
     return (0);
@@ -320,6 +323,7 @@ test_http_hdr_ctl_char(int testnum, const char *request, 
const char * /*request_
 {
   int err;
   HTTPHdr hdr;
+  ts::PostScript hdr_defer([&]() -> void { hdr.destroy(); });
   HTTPParser parser;
   const char *start;
   char cpy_buf[2048];
@@ -571,6 +575,7 @@ TEST_CASE("HdrTest", "[proxy][hdrtest]")
     };
 
     MIMEHdr hdr;
+    ts::PostScript hdr_defer([&]() -> void { hdr.destroy(); });
     MIMEParser parser;
     mime_parser_init(&parser);
 
diff --git a/proxy/http/unit_tests/test_HttpTransact.cc 
b/proxy/http/unit_tests/test_HttpTransact.cc
index 518e173236..25cf06ce9c 100644
--- a/proxy/http/unit_tests/test_HttpTransact.cc
+++ b/proxy/http/unit_tests/test_HttpTransact.cc
@@ -22,7 +22,10 @@
  */
 
 #include <string_view>
+
 #include "tscore/Diags.h"
+#include "tscpp/util/PostScript.h"
+
 #include "HttpTransact.h"
 #include "records/I_RecordsConfig.h"
 
@@ -40,6 +43,9 @@ TEST_CASE("HttpTransact", "[http]")
     {
       HTTPHdr hdr1;
       HTTPHdr hdr2;
+      ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+      ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
       MIMEField *field;
       const char *str;
       int len;
@@ -125,6 +131,9 @@ TEST_CASE("HttpTransact", "[http]")
     {
       HTTPHdr hdr1;
       HTTPHdr hdr2;
+      ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+      ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
       MIMEField *field;
       const char *str;
       int len;
@@ -203,6 +212,9 @@ TEST_CASE("HttpTransact", "[http]")
     {
       HTTPHdr hdr1;
       HTTPHdr hdr2;
+      ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+      ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
       MIMEField *field;
       const char *str;
       int len;
@@ -281,6 +293,9 @@ TEST_CASE("HttpTransact", "[http]")
     {
       HTTPHdr hdr1;
       HTTPHdr hdr2;
+      ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+      ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
       MIMEField *field;
       const char *str;
       int len;
@@ -359,6 +374,9 @@ TEST_CASE("HttpTransact", "[http]")
     {
       HTTPHdr hdr1;
       HTTPHdr hdr2;
+      ts::PostScript hdr1_defer([&]() -> void { hdr1.destroy(); });
+      ts::PostScript hdr2_defer([&]() -> void { hdr2.destroy(); });
+
       MIMEField *field;
       const char *str;
       int len;
@@ -447,6 +465,9 @@ TEST_CASE("HttpTransact", "[http]")
     {
       HTTPHdr cached_headers;
       HTTPHdr response_headers;
+      ts::PostScript cached_headers_defer([&]() -> void { 
cached_headers.destroy(); });
+      ts::PostScript response_headers_defer([&]() -> void { 
response_headers.destroy(); });
+
       MIMEField *field;
       const char *str;
       int len;

Reply via email to