This is an automated email from the ASF dual-hosted git repository.
cmcfarlen pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/10.1.x by this push:
new 3cec12b917 10.1.x: Fix pqus marshaling (#12490) (#12519)
3cec12b917 is described below
commit 3cec12b917119efe79ce5927c187b5dbf09e6456
Author: Brian Neradt <[email protected]>
AuthorDate: Wed Sep 17 08:13:18 2025 -0500
10.1.x: Fix pqus marshaling (#12490) (#12519)
The pqus scheme marshaling logic used "strlen" which accidentally picked
up LogAccess::strlen rather than the intended std strlen. This resulted
in padded-counting rather than actual strlen counting, which threw off
our buffer counting logic and led to corruption and/or crashing.
The updated ip_allow.test.py reproduced a crash without the LogAccess.cc
patch included in this commit. With the LogAccess patch, the test now
reproduces the expected scheme.
Function renames for clarity:
* LogAccess::round_strlen is not a strlen at all. Rather it converts a
given length to a padded length for alignment.
* LogAccess::strlen returns the padded version of strlen. To make this
explicit (and avoid potential accitantal clashes with ::strlen), I
renamed this to padded_strlen.
This also adds doxygen comments to explain these functions further.
(cherry picked from commit 83adab4eaf1aa1c1504fb6ba5a22df413134cd26)
---
include/proxy/logging/LogAccess.h | 34 +++++++++----
src/proxy/logging/LogAccess.cc | 80 ++++++++++++++----------------
src/traffic_logstats/logstats.cc | 22 ++++----
tests/gold_tests/ip_allow/gold/log.gold | 6 +--
tests/gold_tests/ip_allow/ip_allow.test.py | 12 ++---
tests/gold_tests/ip_allow/run_sed.sh | 4 +-
6 files changed, 81 insertions(+), 77 deletions(-)
diff --git a/include/proxy/logging/LogAccess.h
b/include/proxy/logging/LogAccess.h
index e19e7de285..6edba3e213 100644
--- a/include/proxy/logging/LogAccess.h
+++ b/include/proxy/logging/LogAccess.h
@@ -330,12 +330,24 @@ public:
static int unmarshal_record(char **buf, char *dest, int len);
- //
- // our own strlen function that pads strings to even int64_t boundaries
- // so that there are no alignment problems with the int values.
- //
- static int round_strlen(int len);
- static int strlen(const char *str);
+ /** Find the padded length of a given value for alignment purposes.
+ * @param[in] len The length from which to calculate the padded length.
+ * @return The padded length on an even int64_t boundary.
+ */
+ static int padded_length(int len);
+
+ /** strlen wrapped in @a padded_length for calculaing padded string lengths.
+ *
+ * This is our own version of strlen which takes into account nullptr input
+ * for DEFAULT_STR and adds space for the null terminator. After accounting
+ * for these, it passes the result to @a padded_length to ensure space for
+ * alignment. This function is useful, for example, when calculating the
+ * length for @a marshal_str.
+ *
+ * @param[in] str The string from which to calculate the padded length.
+ * @return The padded length for the string on an even int64_t boundary.
+ */
+ static int padded_strlen(const char *str);
public:
static void marshal_int(char *dest, int64_t source);
@@ -385,25 +397,25 @@ private:
};
inline int
-LogAccess::round_strlen(int len)
+LogAccess::padded_length(int len)
{
return INK_ALIGN_DEFAULT(len);
}
/*-------------------------------------------------------------------------
- LogAccess::strlen
+ LogAccess::padded_strlen
Take trailing null and alignment padding into account. This makes sure
that strings in the LogBuffer are laid out properly.
-------------------------------------------------------------------------*/
inline int
-LogAccess::strlen(const char *str)
+LogAccess::padded_strlen(const char *str)
{
if (str == nullptr || str[0] == 0) {
- return round_strlen(sizeof(DEFAULT_STR));
+ return padded_length(sizeof(DEFAULT_STR));
} else {
- return (int)(round_strlen(((int)::strlen(str) + 1))); // actual bytes for
string
+ return (int)(padded_length(((int)::strlen(str) + 1))); // actual bytes for
string
}
}
diff --git a/src/proxy/logging/LogAccess.cc b/src/proxy/logging/LogAccess.cc
index 313d54012a..18c0871bb8 100644
--- a/src/proxy/logging/LogAccess.cc
+++ b/src/proxy/logging/LogAccess.cc
@@ -156,7 +156,7 @@ LogAccess::marshal_proxy_host_ip(char *buf)
int
LogAccess::marshal_process_uuid(char *buf)
{
- int len = round_strlen(TS_UUID_STRING_LEN + 1);
+ int len = padded_length(TS_UUID_STRING_LEN + 1);
if (buf) {
const char *str = const_cast<char
*>(Machine::instance()->uuid.getString());
@@ -186,7 +186,7 @@ LogAccess::marshal_config_str_var(char *config_var, char
*buf)
{
char *str = nullptr;
str = REC_ConfigReadString(config_var);
- int len = LogAccess::strlen(str);
+ int len = LogAccess::padded_strlen(str);
if (buf) {
marshal_str(buf, str, len);
}
@@ -742,7 +742,7 @@ unmarshal_str_json(char **buf, char *dest, int len,
LogSlice *slice)
int val_len = static_cast<int>(::strlen(val_buf));
int escaped_len = escape_json(nullptr, val_buf, val_len);
- *buf += LogAccess::strlen(val_buf); // this is how it was stored
+ *buf += LogAccess::padded_strlen(val_buf); // this is how it was stored
if (slice && slice->m_enable) {
int offset, n;
@@ -794,7 +794,7 @@ LogAccess::unmarshal_str(char **buf, char *dest, int len,
LogSlice *slice, LogEs
char *val_buf = *buf;
int val_len = static_cast<int>(::strlen(val_buf));
- *buf += LogAccess::strlen(val_buf); // this is how it was stored
+ *buf += LogAccess::padded_strlen(val_buf); // this is how it was stored
if (slice && slice->m_enable) {
int offset, n;
@@ -1403,7 +1403,7 @@ LogAccess::marshal_plugin_identity_tag(char *buf)
if (!tag) {
tag = "*";
} else {
- len = LogAccess::strlen(tag);
+ len = LogAccess::padded_strlen(tag);
}
if (buf) {
@@ -1437,7 +1437,7 @@ LogAccess::marshal_cache_lookup_url_canon(char *buf)
// If the lookup URL isn't populated, we'll fall back to the request URL.
len = marshal_client_req_url_canon(buf);
} else {
- len = round_strlen(m_cache_lookup_url_canon_len + 1); // +1 for eos
+ len = padded_length(m_cache_lookup_url_canon_len + 1); // +1 for eos
if (buf) {
marshal_mem(buf, m_cache_lookup_url_canon_str,
m_cache_lookup_url_canon_len, len);
}
@@ -1471,7 +1471,7 @@ LogAccess::marshal_client_sni_server_name(char *buf)
}
}
}
- int len = round_strlen(server_name.length() + 1);
+ int len = padded_length(server_name.length() + 1);
if (buf) {
marshal_str(buf, server_name.data(), len);
}
@@ -1523,7 +1523,7 @@ int
LogAccess::marshal_version_build_number(char *buf)
{
auto &version = AppVersionInfo::get_version();
- int len = LogAccess::strlen(version.build_number());
+ int len = LogAccess::padded_strlen(version.build_number());
if (buf) {
marshal_str(buf, version.build_number(), len);
}
@@ -1537,7 +1537,7 @@ int
LogAccess::marshal_version_string(char *buf)
{
auto &version = AppVersionInfo::get_version();
- int len = LogAccess::strlen(version.version());
+ int len = LogAccess::padded_strlen(version.version());
if (buf) {
marshal_str(buf, version.version(), len);
}
@@ -1567,7 +1567,7 @@ LogAccess::marshal_proxy_protocol_version(char *buf)
version_str = "-";
break;
}
- len = LogAccess::strlen(version_str);
+ len = LogAccess::padded_strlen(version_str);
}
if (buf) {
@@ -1790,7 +1790,7 @@ LogAccess::marshal_client_req_http_method(char *buf)
// buffer if str is nil, and we need room for this.
//
if (alen) {
- plen = round_strlen(alen + 1); // +1 for trailing 0
+ plen = padded_length(alen + 1); // +1 for trailing 0
}
}
@@ -1806,7 +1806,7 @@ LogAccess::marshal_client_req_http_method(char *buf)
int
LogAccess::marshal_client_req_url(char *buf)
{
- int len = round_strlen(m_client_req_url_len + 1); // +1 for trailing 0
+ int len = padded_length(m_client_req_url_len + 1); // +1 for trailing 0
if (buf) {
marshal_mem(buf, m_client_req_url_str, m_client_req_url_len, len);
@@ -1820,7 +1820,7 @@ LogAccess::marshal_client_req_url(char *buf)
int
LogAccess::marshal_client_req_url_canon(char *buf)
{
- int len = round_strlen(m_client_req_url_canon_len + 1);
+ int len = padded_length(m_client_req_url_canon_len + 1);
if (buf) {
marshal_mem(buf, m_client_req_url_canon_str, m_client_req_url_canon_len,
len);
@@ -1843,7 +1843,7 @@ LogAccess::marshal_client_req_unmapped_url_canon(char
*buf)
// log the requests, even when there is no remap rule for it.
len = marshal_client_req_url_canon(buf);
} else {
- len = round_strlen(m_client_req_unmapped_url_canon_len + 1); // +1 for eos
+ len = padded_length(m_client_req_unmapped_url_canon_len + 1); // +1 for eos
if (buf) {
marshal_mem(buf, m_client_req_unmapped_url_canon_str,
m_client_req_unmapped_url_canon_len, len);
}
@@ -1866,7 +1866,7 @@ LogAccess::marshal_client_req_unmapped_url_path(char *buf)
if (m_client_req_unmapped_url_path_str == INVALID_STR) {
len = marshal_client_req_url_path(buf);
} else {
- len = round_strlen(m_client_req_unmapped_url_path_len + 1); // +1 for eos
+ len = padded_length(m_client_req_unmapped_url_path_len + 1); // +1 for eos
if (buf) {
marshal_mem(buf, m_client_req_unmapped_url_path_str,
m_client_req_unmapped_url_path_len, len);
}
@@ -1883,7 +1883,7 @@ LogAccess::marshal_client_req_unmapped_url_host(char *buf)
validate_unmapped_url();
validate_unmapped_url_path();
- int len = round_strlen(m_client_req_unmapped_url_host_len + 1); // +1 for eos
+ int len = padded_length(m_client_req_unmapped_url_host_len + 1); // +1 for
eos
if (buf) {
marshal_mem(buf, m_client_req_unmapped_url_host_str,
m_client_req_unmapped_url_host_len, len);
}
@@ -1894,7 +1894,7 @@ LogAccess::marshal_client_req_unmapped_url_host(char *buf)
int
LogAccess::marshal_client_req_url_path(char *buf)
{
- int len = round_strlen(m_client_req_url_path_len + 1);
+ int len = padded_length(m_client_req_url_path_len + 1);
if (buf) {
marshal_mem(buf, m_client_req_url_path_str, m_client_req_url_path_len,
len);
}
@@ -1915,17 +1915,9 @@ LogAccess::marshal_client_req_url_scheme(char *buf)
alen = hdrtoken_index_to_length(scheme);
} else {
str = "UNKNOWN";
- alen = strlen(str);
- }
-
- // calculate the padded length only if the actual length
- // is not zero. We don't want the padded length to be zero
- // because marshal_mem should write the DEFAULT_STR to the
- // buffer if str is nil, and we need room for this.
- //
- if (alen) {
- plen = round_strlen(alen + 1); // +1 for trailing 0
+ alen = ::strlen(str);
}
+ plen = padded_length(alen + 1); // +1 for trailing 0
if (buf) {
marshal_mem(buf, str, alen, plen);
@@ -1962,7 +1954,7 @@ int
LogAccess::marshal_client_req_protocol_version(char *buf)
{
const char *protocol_str = m_http_sm->get_user_agent().get_client_protocol();
- int len = LogAccess::strlen(protocol_str);
+ int len = LogAccess::padded_strlen(protocol_str);
// Set major & minor versions when protocol_str is not "http/2".
if (::strlen(protocol_str) == 4 && strncmp("http", protocol_str, 4) == 0) {
@@ -1977,7 +1969,7 @@ LogAccess::marshal_client_req_protocol_version(char *buf)
protocol_str = "*";
}
- len = LogAccess::strlen(protocol_str);
+ len = LogAccess::padded_strlen(protocol_str);
}
if (buf) {
@@ -1994,7 +1986,7 @@ int
LogAccess::marshal_server_req_protocol_version(char *buf)
{
const char *protocol_str = m_http_sm->server_protocol;
- int len = LogAccess::strlen(protocol_str);
+ int len = LogAccess::padded_strlen(protocol_str);
// Set major & minor versions when protocol_str is not "http/2".
if (::strlen(protocol_str) == 4 && strncmp("http", protocol_str, 4) == 0) {
@@ -2009,7 +2001,7 @@ LogAccess::marshal_server_req_protocol_version(char *buf)
protocol_str = "*";
}
- len = LogAccess::strlen(protocol_str);
+ len = LogAccess::padded_strlen(protocol_str);
}
if (buf) {
@@ -2164,7 +2156,7 @@ LogAccess::marshal_client_req_uuid(char *buf)
int len = snprintf(str, sizeof(str), "%s-%" PRId64 "", uuid,
m_http_sm->sm_id);
ink_assert(len <= TS_CRUUID_STRING_LEN);
- len = round_strlen(len + 1);
+ len = padded_length(len + 1);
if (buf) {
marshal_str(buf, str, len); // This will pad the remaining bytes properly
...
@@ -2184,7 +2176,7 @@ LogAccess::marshal_client_rx_error_code(char *buf)
{
char error_code[MAX_PROXY_ERROR_CODE_SIZE] = {0};
m_http_sm->t_state.client_info.rx_error_code.str(error_code,
sizeof(error_code));
- int round_len = LogAccess::strlen(error_code);
+ int round_len = LogAccess::padded_strlen(error_code);
if (buf) {
marshal_str(buf, error_code, round_len);
@@ -2198,7 +2190,7 @@ LogAccess::marshal_client_tx_error_code(char *buf)
{
char error_code[MAX_PROXY_ERROR_CODE_SIZE] = {0};
m_http_sm->t_state.client_info.tx_error_code.str(error_code,
sizeof(error_code));
- int round_len = LogAccess::strlen(error_code);
+ int round_len = LogAccess::padded_strlen(error_code);
if (buf) {
marshal_str(buf, error_code, round_len);
@@ -2213,7 +2205,7 @@ int
LogAccess::marshal_client_security_protocol(char *buf)
{
const char *proto =
m_http_sm->get_user_agent().get_client_sec_protocol();
- int round_len = LogAccess::strlen(proto);
+ int round_len = LogAccess::padded_strlen(proto);
if (buf) {
marshal_str(buf, proto, round_len);
@@ -2226,7 +2218,7 @@ int
LogAccess::marshal_client_security_cipher_suite(char *buf)
{
const char *cipher =
m_http_sm->get_user_agent().get_client_cipher_suite();
- int round_len = LogAccess::strlen(cipher);
+ int round_len = LogAccess::padded_strlen(cipher);
if (buf) {
marshal_str(buf, cipher, round_len);
@@ -2239,7 +2231,7 @@ int
LogAccess::marshal_client_security_curve(char *buf)
{
const char *curve = m_http_sm->get_user_agent().get_client_curve();
- int round_len = LogAccess::strlen(curve);
+ int round_len = LogAccess::padded_strlen(curve);
if (buf) {
marshal_str(buf, curve, round_len);
@@ -2252,7 +2244,7 @@ int
LogAccess::marshal_client_security_group(char *buf)
{
const char *group =
m_http_sm->get_user_agent().get_client_security_group();
- int round_len = LogAccess::strlen(group);
+ int round_len = LogAccess::padded_strlen(group);
if (buf) {
marshal_str(buf, group, round_len);
@@ -2270,7 +2262,7 @@ LogAccess::marshal_client_security_alpn(char *buf)
alpn = client_sec_alpn.data();
}
- int round_len = LogAccess::strlen(alpn);
+ int round_len = LogAccess::padded_strlen(alpn);
if (buf) {
marshal_str(buf, alpn, round_len);
@@ -2285,7 +2277,7 @@ LogAccess::marshal_client_security_alpn(char *buf)
int
LogAccess::marshal_proxy_resp_content_type(char *buf)
{
- int len = round_strlen(m_proxy_resp_content_type_len + 1);
+ int len = padded_length(m_proxy_resp_content_type_len + 1);
if (buf) {
marshal_mem(buf, m_proxy_resp_content_type_str,
m_proxy_resp_content_type_len, len);
}
@@ -2298,7 +2290,7 @@ LogAccess::marshal_proxy_resp_content_type(char *buf)
int
LogAccess::marshal_proxy_resp_reason_phrase(char *buf)
{
- int len = round_strlen(m_proxy_resp_reason_phrase_len + 1);
+ int len = padded_length(m_proxy_resp_reason_phrase_len + 1);
if (buf) {
marshal_mem(buf, m_proxy_resp_reason_phrase_str,
m_proxy_resp_reason_phrase_len, len);
}
@@ -2604,7 +2596,7 @@ LogAccess::marshal_server_host_name(char *buf)
if (m_http_sm->t_state.current.server) {
str = m_http_sm->t_state.current.server->name;
- len = LogAccess::strlen(str);
+ len = LogAccess::padded_strlen(str);
}
if (buf) {
@@ -3164,7 +3156,7 @@ LogAccess::marshal_http_header_field(LogField::Container
container, char *field,
buf++;
}
running_len += 1;
- padded_len = round_strlen(running_len);
+ padded_len = padded_length(running_len);
// Note: marshal_string fills the padding to
// prevent purify UMRs so we do it here too
@@ -3269,7 +3261,7 @@
LogAccess::marshal_http_header_field_escapify(LogField::Container container, cha
buf++;
}
running_len += 1;
- padded_len = round_strlen(running_len);
+ padded_len = padded_length(running_len);
// Note: marshal_string fills the padding to
// prevent purify UMRs so we do it here too
diff --git a/src/traffic_logstats/logstats.cc b/src/traffic_logstats/logstats.cc
index e7d26150b3..7ffdd62e9c 100644
--- a/src/traffic_logstats/logstats.cc
+++ b/src/traffic_logstats/logstats.cc
@@ -1369,19 +1369,19 @@ parse_log_buff(LogBufferHeader *buf_header, bool
summary = false, bool aggregate
switch (*reinterpret_cast<int *>(read_from)) {
case GET_AS_INT:
method = METHOD_GET;
- read_from += LogAccess::round_strlen(3 + 1);
+ read_from += LogAccess::padded_length(3 + 1);
break;
case PUT_AS_INT:
method = METHOD_PUT;
- read_from += LogAccess::round_strlen(3 + 1);
+ read_from += LogAccess::padded_length(3 + 1);
break;
case HEAD_AS_INT:
method = METHOD_HEAD;
- read_from += LogAccess::round_strlen(4 + 1);
+ read_from += LogAccess::padded_length(4 + 1);
break;
case POST_AS_INT:
method = METHOD_POST;
- read_from += LogAccess::round_strlen(4 + 1);
+ read_from += LogAccess::padded_length(4 + 1);
break;
default:
tok_len = strlen(read_from);
@@ -1404,7 +1404,7 @@ parse_log_buff(LogBufferHeader *buf_header, bool summary
= false, bool aggregate
flag = 1;
}
}
- read_from += LogAccess::round_strlen(tok_len + 1);
+ read_from += LogAccess::padded_length(tok_len + 1);
break;
}
break;
@@ -1454,7 +1454,7 @@ parse_log_buff(LogBufferHeader *buf_header, bool summary
= false, bool aggregate
}
tok_len = strlen(read_from);
}
- read_from += LogAccess::round_strlen(tok_len + 1);
+ read_from += LogAccess::padded_length(tok_len + 1);
if (!aggregate_per_userid) {
update_stats(o_stats, method, scheme, http_code, size, result, hier,
elapsed, ipv6);
}
@@ -1471,9 +1471,9 @@ parse_log_buff(LogBufferHeader *buf_header, bool summary
= false, bool aggregate
}
if ('-' == *read_from) {
- read_from += LogAccess::round_strlen(1 + 1);
+ read_from += LogAccess::padded_length(1 + 1);
} else {
- read_from += LogAccess::strlen(read_from);
+ read_from += LogAccess::padded_strlen(read_from);
}
break;
@@ -1531,9 +1531,9 @@ parse_log_buff(LogBufferHeader *buf_header, bool summary
= false, bool aggregate
case P_STATE_PEER:
state = P_STATE_TYPE;
if ('-' == *read_from) {
- read_from += LogAccess::round_strlen(1 + 1);
+ read_from += LogAccess::padded_length(1 + 1);
} else {
- read_from += LogAccess::strlen(read_from);
+ read_from += LogAccess::padded_strlen(read_from);
}
break;
@@ -1746,7 +1746,7 @@ parse_log_buff(LogBufferHeader *buf_header, bool summary
= false, bool aggregate
update_counter(o_stats->content.other, size);
}
}
- read_from += LogAccess::round_strlen(tok_len + 1);
+ read_from += LogAccess::padded_length(tok_len + 1);
flag = 0; // We exited this state without errors
break;
diff --git a/tests/gold_tests/ip_allow/gold/log.gold
b/tests/gold_tests/ip_allow/gold/log.gold
index ef04bf8bb3..4508f83174 100644
--- a/tests/gold_tests/ip_allow/gold/log.gold
+++ b/tests/gold_tests/ip_allow/gold/log.gold
@@ -1,3 +1,3 @@
-127.0.0.1 TCP_MISS/200 130 GET https://127.0.0.1:SOMEPORT/get DIRECT - - -
127.0.0.1:SOMEPORT - sftover=- sftmat=- sftcls=- sftbadclf=- yra=- scheme=http
-127.0.0.1 ERR_PROXY_DENIED/403 453 CONNECT 127.0.0.1:SOMEPORT/connect DIRECT
text/html - - 127.0.0.1:SOMEPORT - sftover=- sftmat=- sftcls=- sftbadclf=-
yra=- scheme=UNKNOWN
-127.0.0.1 ERR_PROXY_DENIED/403 453 PUSH https://127.0.0.1:SOMEPORT/h2_push
DIRECT text/html - - 127.0.0.1:SOMEPORT - sftover=- sftmat=- sftcls=-
sftbadclf=- yra=- scheme=https
+scheme=http 127.0.0.1 TCP_MISS/200 130 GET https://127.0.0.1:SOMEPORT/get
DIRECT - - - 127.0.0.1:SOMEPORT - sftover=- sftmat=- sftcls=- sftbadclf=- yra=-
+scheme=UNKNOWN 127.0.0.1 ERR_PROXY_DENIED/403 453 CONNECT
127.0.0.1:SOMEPORT/connect DIRECT text/html - - 127.0.0.1:SOMEPORT - sftover=-
sftmat=- sftcls=- sftbadclf=- yra=-
+scheme=https 127.0.0.1 ERR_PROXY_DENIED/403 453 PUSH
https://127.0.0.1:SOMEPORT/h2_push DIRECT text/html - - 127.0.0.1:SOMEPORT -
sftover=- sftmat=- sftcls=- sftbadclf=- yra=-
diff --git a/tests/gold_tests/ip_allow/ip_allow.test.py
b/tests/gold_tests/ip_allow/ip_allow.test.py
index c6e7c7c4fe..7f8669dc8f 100644
--- a/tests/gold_tests/ip_allow/ip_allow.test.py
+++ b/tests/gold_tests/ip_allow/ip_allow.test.py
@@ -96,12 +96,12 @@ ts.Disk.records_config.update(
})
format_string = (
- '%<cqtd>-%<cqtt> %<stms> %<ttms> %<chi> %<crc>/%<pssc> %<psql> '
+ 'scheme=%<pqus> %<cqtd>-%<cqtt> %<stms> %<ttms> %<chi> %<crc>/%<pssc>
%<psql> '
'%<cqhm> %<pquc> %<phr> %<psct> %<{Y-RID}pqh> '
'%<{Y-YPCS}pqh> %<{Host}cqh> %<{CHAD}pqh> '
'sftover=%<{x-safet-overlimit-rules}cqh>
sftmat=%<{x-safet-matched-rules}cqh> '
'sftcls=%<{x-safet-classification}cqh> '
- 'sftbadclf=%<{x-safet-bad-classifiers}cqh> yra=%<{Y-RA}cqh>
scheme=%<pqus>')
+ 'sftbadclf=%<{x-safet-bad-classifiers}cqh> yra=%<{Y-RA}cqh>')
ts.Disk.logging_yaml.AddLines(
''' logging:
@@ -137,7 +137,7 @@ ts.Disk.traffic_out.Content += Testers.ContainsExpression(
#
# TEST 1: Perform a GET request. Should be allowed because GET is in the
allowlist.
#
-tr = Test.AddTestRun()
+tr = Test.AddTestRun('Allowed GET request')
tr.Processes.Default.StartBefore(server,
ready=When.PortOpen(server.Variables.SSL_Port))
tr.Processes.Default.StartBefore(Test.Processes.ts)
@@ -151,7 +151,7 @@ tr.StillRunningAfter = server
# TEST 2: Perform a CONNECT request. Should not be allowed because CONNECT is
# not in the allowlist.
#
-tr = Test.AddTestRun()
+tr = Test.AddTestRun('Denied CONNECT request')
tr.MakeCurlCommand(
'--verbose -X CONNECT -H "Host: localhost"
http://localhost:{ts_port}/connect'.format(ts_port=ts.Variables.port), ts=ts)
tr.Processes.Default.ReturnCode = 0
@@ -163,7 +163,7 @@ tr.StillRunningAfter = server
# TEST 3: Perform a PUSH request over HTTP/2. Should not be allowed because
# PUSH is not in the allowlist.
#
-tr = Test.AddTestRun()
+tr = Test.AddTestRun('Denied PUSH request over HTTP/2')
tr.MakeCurlCommand(
'--http2 --verbose -k -X PUSH -H "Host: localhost"
https://localhost:{ts_port}/h2_push'.format(ts_port=ts.Variables.ssl_port),
ts=ts)
@@ -172,7 +172,7 @@ tr.Processes.Default.Streams.stderr = 'gold/403_h2.gold'
tr.StillRunningAfter = ts
tr.StillRunningAfter = server
-tr = Test.AddTestRun()
+tr = Test.AddTestRun('Await and verify the transaction log file')
tr.Processes.Default.Command = (
os.path.join(Test.Variables.AtsTestToolsDir, 'stdout_wait') + ' 60 "{} {}"
{}'.format(
os.path.join(Test.TestDirectory, 'run_sed.sh'),
os.path.join(ts.Variables.LOGDIR, 'squid.log'),
diff --git a/tests/gold_tests/ip_allow/run_sed.sh
b/tests/gold_tests/ip_allow/run_sed.sh
index 2d3ac39a1d..f3d0a343ab 100755
--- a/tests/gold_tests/ip_allow/run_sed.sh
+++ b/tests/gold_tests/ip_allow/run_sed.sh
@@ -16,6 +16,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# The first sed command in the pipeline eliminates the first 3 log fields from
each log line.
+# The first sed command in the pipeline eliminates the next 3 log fields from
each log line after the scheme field.
-sed 's/^[^ ]* [^ ]* [^ ]* //' < $1 | sed
's/:[0-9][0-9]*\([^0-9]\)/:SOMEPORT\1/g'
+sed 's/^\([^ ]*\) [^ ]* [^ ]* [^ ]* /\1 /' < $1 | sed
's/:[0-9][0-9]*\([^0-9]\)/:SOMEPORT\1/g'