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

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


The following commit(s) were added to refs/heads/9.1.x by this push:
     new 23e7a04  Don't call next next dup on destroyed mime field mloc. (#7833)
23e7a04 is described below

commit 23e7a04b2ab4690b61283b958026de34a0620dc0
Author: Walt Karas <[email protected]>
AuthorDate: Fri May 14 11:02:46 2021 -0500

    Don't call next next dup on destroyed mime field mloc. (#7833)
    
    plugins/background_fetch/headers.cc
    plugins/cache_range_requests/cache_range_requests.cc
    plugins/experimental/access_control/headers.cc
    plugins/experimental/cache_fill/background_fetch.cc
    plugins/header_rewrite/operators.cc
    plugins/prefetch/headers.cc
    
    (cherry picked from commit dc10eae8a85e9b1c3436d15bb97219e98b41d42e)
---
 plugins/background_fetch/headers.cc                  | 2 +-
 plugins/cache_range_requests/cache_range_requests.cc | 2 +-
 plugins/experimental/access_control/headers.cc       | 2 +-
 plugins/experimental/cache_fill/background_fetch.cc  | 2 +-
 plugins/header_rewrite/operators.cc                  | 2 +-
 plugins/prefetch/headers.cc                          | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/plugins/background_fetch/headers.cc 
b/plugins/background_fetch/headers.cc
index 4317d9d..a134187 100644
--- a/plugins/background_fetch/headers.cc
+++ b/plugins/background_fetch/headers.cc
@@ -75,6 +75,7 @@ set_header(TSMBuffer bufp, TSMLoc hdr_loc, const char 
*header, int len, const ch
     bool first = true;
 
     while (field_loc) {
+      tmp = TSMimeHdrFieldNextDup(bufp, hdr_loc, field_loc);
       if (first) {
         first = false;
         if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(bufp, hdr_loc, 
field_loc, -1, val, val_len)) {
@@ -83,7 +84,6 @@ set_header(TSMBuffer bufp, TSMLoc hdr_loc, const char 
*header, int len, const ch
       } else {
         TSMimeHdrFieldDestroy(bufp, hdr_loc, field_loc);
       }
-      tmp = TSMimeHdrFieldNextDup(bufp, hdr_loc, field_loc);
       TSHandleMLocRelease(bufp, hdr_loc, field_loc);
       field_loc = tmp;
     }
diff --git a/plugins/cache_range_requests/cache_range_requests.cc 
b/plugins/cache_range_requests/cache_range_requests.cc
index cf2e04f..5b43d45 100644
--- a/plugins/cache_range_requests/cache_range_requests.cc
+++ b/plugins/cache_range_requests/cache_range_requests.cc
@@ -433,6 +433,7 @@ set_header(TSMBuffer buf, TSMLoc hdr_loc, const char 
*header, int len, const cha
     bool first = true;
 
     while (field_loc) {
+      tmp = TSMimeHdrFieldNextDup(buf, hdr_loc, field_loc);
       if (first) {
         first = false;
         if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(buf, hdr_loc, 
field_loc, -1, val, val_len)) {
@@ -441,7 +442,6 @@ set_header(TSMBuffer buf, TSMLoc hdr_loc, const char 
*header, int len, const cha
       } else {
         TSMimeHdrFieldDestroy(buf, hdr_loc, field_loc);
       }
-      tmp = TSMimeHdrFieldNextDup(buf, hdr_loc, field_loc);
       TSHandleMLocRelease(buf, hdr_loc, field_loc);
       field_loc = tmp;
     }
diff --git a/plugins/experimental/access_control/headers.cc 
b/plugins/experimental/access_control/headers.cc
index a22e0ff..1d5089b 100644
--- a/plugins/experimental/access_control/headers.cc
+++ b/plugins/experimental/access_control/headers.cc
@@ -156,6 +156,7 @@ setHeader(TSMBuffer bufp, TSMLoc hdrLoc, const char 
*header, int headerlen, cons
     bool first = true;
 
     while (fieldLoc) {
+      tmp = TSMimeHdrFieldNextDup(bufp, hdrLoc, fieldLoc);
       if (first) {
         first = false;
         if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(bufp, hdrLoc, fieldLoc, 
-1, value, valuelen)) {
@@ -164,7 +165,6 @@ setHeader(TSMBuffer bufp, TSMLoc hdrLoc, const char 
*header, int headerlen, cons
       } else {
         TSMimeHdrFieldDestroy(bufp, hdrLoc, fieldLoc);
       }
-      tmp = TSMimeHdrFieldNextDup(bufp, hdrLoc, fieldLoc);
       TSHandleMLocRelease(bufp, hdrLoc, fieldLoc);
       fieldLoc = tmp;
     }
diff --git a/plugins/experimental/cache_fill/background_fetch.cc 
b/plugins/experimental/cache_fill/background_fetch.cc
index 99857e8..ba74907 100644
--- a/plugins/experimental/cache_fill/background_fetch.cc
+++ b/plugins/experimental/cache_fill/background_fetch.cc
@@ -68,6 +68,7 @@ set_header(TSMBuffer bufp, TSMLoc hdr_loc, const char 
*header, int len, const ch
     bool first = true;
 
     while (field_loc) {
+      tmp = TSMimeHdrFieldNextDup(bufp, hdr_loc, field_loc);
       if (first) {
         first = false;
         if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(bufp, hdr_loc, 
field_loc, -1, val, val_len)) {
@@ -76,7 +77,6 @@ set_header(TSMBuffer bufp, TSMLoc hdr_loc, const char 
*header, int len, const ch
       } else {
         TSMimeHdrFieldDestroy(bufp, hdr_loc, field_loc);
       }
-      tmp = TSMimeHdrFieldNextDup(bufp, hdr_loc, field_loc);
       TSHandleMLocRelease(bufp, hdr_loc, field_loc);
       field_loc = tmp;
     }
diff --git a/plugins/header_rewrite/operators.cc 
b/plugins/header_rewrite/operators.cc
index f0cd8b4..bbd6f52 100644
--- a/plugins/header_rewrite/operators.cc
+++ b/plugins/header_rewrite/operators.cc
@@ -602,6 +602,7 @@ OperatorSetHeader::exec(const Resources &res) const
       bool first = true;
 
       while (field_loc) {
+        tmp = TSMimeHdrFieldNextDup(res.bufp, res.hdr_loc, field_loc);
         if (first) {
           first = false;
           if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(res.bufp, 
res.hdr_loc, field_loc, -1, value.c_str(), value.size())) {
@@ -610,7 +611,6 @@ OperatorSetHeader::exec(const Resources &res) const
         } else {
           TSMimeHdrFieldDestroy(res.bufp, res.hdr_loc, field_loc);
         }
-        tmp = TSMimeHdrFieldNextDup(res.bufp, res.hdr_loc, field_loc);
         TSHandleMLocRelease(res.bufp, res.hdr_loc, field_loc);
         field_loc = tmp;
       }
diff --git a/plugins/prefetch/headers.cc b/plugins/prefetch/headers.cc
index fbfe732..c1e7a13 100644
--- a/plugins/prefetch/headers.cc
+++ b/plugins/prefetch/headers.cc
@@ -156,6 +156,7 @@ setHeader(TSMBuffer bufp, TSMLoc hdrLoc, const char 
*header, int headerlen, cons
     bool first = true;
 
     while (fieldLoc) {
+      tmp = TSMimeHdrFieldNextDup(bufp, hdrLoc, fieldLoc);
       if (first) {
         first = false;
         if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(bufp, hdrLoc, fieldLoc, 
-1, value, valuelen)) {
@@ -164,7 +165,6 @@ setHeader(TSMBuffer bufp, TSMLoc hdrLoc, const char 
*header, int headerlen, cons
       } else {
         TSMimeHdrFieldDestroy(bufp, hdrLoc, fieldLoc);
       }
-      tmp = TSMimeHdrFieldNextDup(bufp, hdrLoc, fieldLoc);
       TSHandleMLocRelease(bufp, hdrLoc, fieldLoc);
       fieldLoc = tmp;
     }

Reply via email to