Re: [PATCH] http: handle both "h2" and "h2h3" in curl info lines
From: Glen Choo <hidden>
Date: 2023-06-20 20:32:10
Jeff King [off-list ref] writes:
When redacting auth tokens in trace output from curl, we look for http/2 headers of the form "h2h3 [header: value]". This comes from b637a41ebe (http: redact curl h2h3 headers in info, 2022-11-11). But the "h2h3" prefix changed to just "h2" in curl's fc2f1e547 (http2: support HTTP/2 to forward proxies, non-tunneling, 2023-04-14). That's in released version curl 8.1.0; linking against that version means we'll fail to correctly redact the trace. Our t5559.17 notices and fails. We can fix this by matching either prefix, which should handle both old and new versions.
Thanks! This patch looks good to me. I think the approach of matching both patterns literally is better than trying to catch both `h2h3` and `h2` with a single pattern. Yes, it's more readable, but it'll also extend better to future changes in curl - we have no control over what curl might choose to log in the future, which could be something completely unmatchable.
quoted hunk ↗ jump to hunk
Signed-off-by: Jeff King <redacted> --- http.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)diff --git a/http.c b/http.c index bb58bb3e6a..b71bb1e3ad 100644 --- a/http.c +++ b/http.c@@ -746,7 +746,8 @@ static void redact_sensitive_info_header(struct strbuf *header) * h2h3 [<header-name>: <header-val>] */ if (trace_curl_redact && - skip_iprefix(header->buf, "h2h3 [", &sensitive_header)) { + (skip_iprefix(header->buf, "h2h3 [", &sensitive_header) || + skip_iprefix(header->buf, "h2 [", &sensitive_header))) { if (redact_sensitive_header(header, sensitive_header - header->buf)) { /* redaction ate our closing bracket */ strbuf_addch(header, ']');-- 2.41.0.402.g53108db102