Merge branch 'jk/redact-h2h3-headers-fix' into maint-2.42
HTTP Header redaction code has been adjusted for a newer version of cURL library that shows its traces differently from earlier versions. * jk/redact-h2h3-headers-fix: http: update curl http/2 info matching for curl 8.3.0 http: factor out matching of curl http/2 trace linesmaint
commit
2a6806140e
37
http.c
37
http.c
|
@ -738,18 +738,43 @@ static int redact_sensitive_header(struct strbuf *header, size_t offset)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int match_curl_h2_trace(const char *line, const char **out)
|
||||||
|
{
|
||||||
|
const char *p;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* curl prior to 8.1.0 gives us:
|
||||||
|
*
|
||||||
|
* h2h3 [<header-name>: <header-val>]
|
||||||
|
*
|
||||||
|
* Starting in 8.1.0, the first token became just "h2".
|
||||||
|
*/
|
||||||
|
if (skip_iprefix(line, "h2h3 [", out) ||
|
||||||
|
skip_iprefix(line, "h2 [", out))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* curl 8.3.0 uses:
|
||||||
|
* [HTTP/2] [<stream-id>] [<header-name>: <header-val>]
|
||||||
|
* where <stream-id> is numeric.
|
||||||
|
*/
|
||||||
|
if (skip_iprefix(line, "[HTTP/2] [", &p)) {
|
||||||
|
while (isdigit(*p))
|
||||||
|
p++;
|
||||||
|
if (skip_prefix(p, "] [", out))
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Redact headers in info */
|
/* Redact headers in info */
|
||||||
static void redact_sensitive_info_header(struct strbuf *header)
|
static void redact_sensitive_info_header(struct strbuf *header)
|
||||||
{
|
{
|
||||||
const char *sensitive_header;
|
const char *sensitive_header;
|
||||||
|
|
||||||
/*
|
|
||||||
* curl's h2h3 prints headers in info, e.g.:
|
|
||||||
* h2h3 [<header-name>: <header-val>]
|
|
||||||
*/
|
|
||||||
if (trace_curl_redact &&
|
if (trace_curl_redact &&
|
||||||
(skip_iprefix(header->buf, "h2h3 [", &sensitive_header) ||
|
match_curl_h2_trace(header->buf, &sensitive_header)) {
|
||||||
skip_iprefix(header->buf, "h2 [", &sensitive_header))) {
|
|
||||||
if (redact_sensitive_header(header, sensitive_header - header->buf)) {
|
if (redact_sensitive_header(header, sensitive_header - header->buf)) {
|
||||||
/* redaction ate our closing bracket */
|
/* redaction ate our closing bracket */
|
||||||
strbuf_addch(header, ']');
|
strbuf_addch(header, ']');
|
||||||
|
|
Loading…
Reference in New Issue