Copilot commented on code in PR #13697:
URL: https://github.com/apache/trafficserver/pull/13697#discussion_r4021913644
##########
plugins/stats_over_http/stats_over_http.cc:
##########
@@ -1151,21 +1152,26 @@ stats_origin(TSCont contp, TSEvent /* event ATS_UNUSED
*/, void *edata)
my_state->output_format = output_format_t::JSON_OUTPUT; // default to json
output
// accept header exists, use it to determine response type
if (accept_field != TS_NULL_MLOC) {
- int len = -1;
- const char *str = TSMimeHdrFieldValueStringGet(reqp, hdr_loc,
accept_field, -1, &len);
+ int len = -1;
+ const char *str = TSMimeHdrFieldValueStringGet(reqp, hdr_loc,
accept_field, -1, &len);
+ std::string_view accept{};
+
+ if (str != nullptr && len > 0) {
+ accept = std::string_view{str,
static_cast<std::string_view::size_type>(len)};
+ }
// Parse the Accept header, default to JSON output unless its another
supported format
- if (!strncasecmp(str, "text/csv", len)) {
+ if (ts::iequals(accept, "text/csv")) {
Dbg(dbg_ctl, "Saw text/csv in accept header, sending CSV output.");
my_state->output_format = output_format_t::CSV_OUTPUT;
- } else if (!strncasecmp(str, "text/plain; version=0.0.4", len)) {
+ } else if (ts::iequals(accept, "text/plain; version=0.0.4")) {
Dbg(dbg_ctl, "Saw text/plain; version=0.0.4 in accept header, sending
Prometheus output.");
my_state->output_format = output_format_t::PROMETHEUS_OUTPUT;
- } else if (!strncasecmp(str, "text/plain; version=2.0.0", len)) {
+ } else if (ts::iequals(accept, "text/plain; version=2.0.0")) {
Dbg(dbg_ctl, "Saw text/plain; version=2.0.0 in accept header, sending
Prometheus v2 output.");
my_state->output_format = output_format_t::PROMETHEUS_V2_OUTPUT;
} else {
- Dbg(dbg_ctl, "Saw %.*s in accept header, defaulting to JSON output.",
len, str);
+ Dbg(dbg_ctl, "Saw %.*s in accept header, defaulting to JSON output.",
static_cast<int>(accept.size()), accept.data());
Review Comment:
When the Accept field exists with an empty value (or the API returns
nullptr), `accept` remains default-constructed and `accept.data()` may be null.
Passing that pointer to `%s` is undefined even with precision 0; use a non-null
empty literal for this log path.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]