Thread (7 messages) 7 messages, 2 authors, 2023-06-20

Re: [PATCH] http: handle both "h2" and "h2h3" in curl info lines

From: Jeff King <hidden>
Date: 2023-06-17 05:31:38
Subsystem: the rest · Maintainer: Linus Torvalds

On Sat, Jun 17, 2023 at 01:15:59AM -0400, Jeff King wrote:
quoted hunk ↗ jump to hunk
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, ']');
I of course found it unsatisfying that we are not taking advantage of
the fact that "h2" is a subset of "h2h3". But optionally skipping past
h3 in the middle of an &&-chain is awkward (you have to write
"skip_prefix() || 1"). We could rewrite it with early returns, as below,
but I think the result is probably less readable.
diff --git a/http.c b/http.c
index b71bb1e3ad..1abfaad4c1 100644
--- a/http.c
+++ b/http.c
@@ -741,17 +741,23 @@ static void redact_sensitive_info_header(struct strbuf *header)
 {
 	const char *sensitive_header;
 
+	if (!trace_curl_redact)
+		return;
+
 	/*
-	 * curl's h2h3 prints headers in info, e.g.:
+	 * curl's http/2 prints headers in info with either an "h2" or an
+	 * "h2h3" prefix, e.g.:
 	 *   h2h3 [<header-name>: <header-val>]
 	 */
-	if (trace_curl_redact &&
-	    (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, ']');
-		}
+	if (!skip_iprefix(header->buf, "h2", &sensitive_header))
+		return;
+	skip_iprefix(sensitive_header, "h3", &sensitive_header);
+	if (!skip_prefix(sensitive_header, " [", &sensitive_header))
+		return;
+
+	if (redact_sensitive_header(header, sensitive_header - header->buf)) {
+		/* redaction ate our closing bracket */
+		strbuf_addch(header, ']');
 	}
 }
 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help