From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Patrick Steinhardt <ps@pks.im>,
Collin Funk <collin.funk1@gmail.com>,
Michael J Gruber <git@grubix.eu>
Subject: [PATCH v2 11/12] http: drop const to fix strstr() warning
Date: Thu, 2 Apr 2026 00:15:14 -0400 [thread overview]
Message-ID: <20260402041514.GK3501239@coredump.intra.peff.net> (raw)
In-Reply-To: <20260402041433.GA3501120@coredump.intra.peff.net>
In redact_sensitive_header(), a C23 implementation of libc will complain
that strstr() assigns the result from "const char *cookie" to "char
*semicolon".
Ultimately the memory is writable. We're fed a strbuf, generate a const
pointer "sensitive_header" within it using skip_iprefix(), and then
assign the result to "cookie". So we can solve this by dropping the
const from "cookie" and "sensitive_header".
However, this runs afoul of skip_iprefix(), which wants a "const char
**" for its out-parameter. We can solve that by teaching skip_iprefix()
the same "make sure out is at least as const as in" magic that we
recently taught to skip_prefix().
Signed-off-by: Jeff King <peff@peff.net>
---
git-compat-util.h | 6 ++++--
http.c | 4 ++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/git-compat-util.h b/git-compat-util.h
index e9629b2a9d..4ddac61992 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -902,8 +902,10 @@ static inline size_t xsize_t(off_t len)
* is done via tolower(), so it is strictly ASCII (no multi-byte characters or
* locale-specific conversions).
*/
-static inline bool skip_iprefix(const char *str, const char *prefix,
- const char **out)
+#define skip_iprefix(str, prefix, out) \
+ skip_iprefix_impl((str), (prefix), CONST_OUTPARAM((str), (out)))
+static inline bool skip_iprefix_impl(const char *str, const char *prefix,
+ const char **out)
{
do {
if (!*prefix) {
diff --git a/http.c b/http.c
index d8d016891b..67c9c6fc60 100644
--- a/http.c
+++ b/http.c
@@ -748,7 +748,7 @@ static int has_proxy_cert_password(void)
static int redact_sensitive_header(struct strbuf *header, size_t offset)
{
int ret = 0;
- const char *sensitive_header;
+ char *sensitive_header;
if (trace_curl_redact &&
(skip_iprefix(header->buf + offset, "Authorization:", &sensitive_header) ||
@@ -765,7 +765,7 @@ static int redact_sensitive_header(struct strbuf *header, size_t offset)
} else if (trace_curl_redact &&
skip_iprefix(header->buf + offset, "Cookie:", &sensitive_header)) {
struct strbuf redacted_header = STRBUF_INIT;
- const char *cookie;
+ char *cookie;
while (isspace(*sensitive_header))
sensitive_header++;
--
2.53.0.1172.ge9e20b5838
next prev parent reply other threads:[~2026-04-02 4:15 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 23:38 [PATCH 0/12] fixing the remainder of the C23 strchr warnings Jeff King
2026-03-31 23:41 ` [PATCH 01/12] convert: add const to fix strchr() warnings Jeff King
2026-03-31 23:41 ` [PATCH 02/12] http: " Jeff King
2026-03-31 23:41 ` [PATCH 03/12] transport-helper: drop " Jeff King
2026-04-01 13:46 ` Patrick Steinhardt
2026-03-31 23:42 ` [PATCH 04/12] pager: explicitly cast away strchr() constness Jeff King
2026-04-01 20:50 ` Junio C Hamano
2026-04-02 3:54 ` Jeff King
2026-03-31 23:42 ` [PATCH 05/12] run-command: explicitly cast away constness when assigning to void Jeff King
2026-03-31 23:44 ` [PATCH 06/12] find_last_dir_sep(): convert inline function to macro Jeff King
2026-03-31 23:46 ` [PATCH 07/12] pseudo-merge: fix disk reads from find_pseudo_merge() Jeff King
2026-03-31 23:56 ` Jeff King
2026-04-01 21:40 ` Junio C Hamano
2026-04-02 23:51 ` Taylor Blau
2026-03-31 23:50 ` [PATCH 08/12] skip_prefix(): check const match between in and out params Jeff King
2026-04-01 13:17 ` Phillip Wood
2026-04-01 14:04 ` Phillip Wood
2026-04-01 19:24 ` Jeff King
2026-04-01 22:13 ` Junio C Hamano
2026-04-02 15:05 ` Phillip Wood
2026-04-01 13:46 ` Patrick Steinhardt
2026-03-31 23:51 ` [PATCH 09/12] pkt-line: make packet_reader.line non-const Jeff King
2026-04-01 22:18 ` Junio C Hamano
2026-04-02 3:55 ` Jeff King
2026-03-31 23:52 ` [PATCH 10/12] range-diff: drop const to fix strstr() warnings Jeff King
2026-03-31 23:52 ` [PATCH 11/12] http: drop const to fix strstr() warning Jeff King
2026-03-31 23:53 ` [PATCH 12/12] refs/files-backend: drop const to fix strchr() warning Jeff King
2026-04-01 13:46 ` Patrick Steinhardt
2026-04-01 22:22 ` Junio C Hamano
2026-04-02 3:56 ` Jeff King
2026-04-02 4:14 ` [PATCH v2 0/12] fixing the remainder of the C23 strchr warnings Jeff King
2026-04-02 4:14 ` [PATCH v2 01/12] convert: add const to fix strchr() warnings Jeff King
2026-04-02 4:14 ` [PATCH v2 02/12] http: " Jeff King
2026-04-02 4:14 ` [PATCH v2 03/12] transport-helper: drop " Jeff King
2026-04-02 4:14 ` [PATCH v2 04/12] pager: explicitly cast away strchr() constness Jeff King
2026-04-02 4:15 ` [PATCH v2 05/12] run-command: explicitly cast away constness when assigning to void Jeff King
2026-04-02 4:15 ` [PATCH v2 06/12] find_last_dir_sep(): convert inline function to macro Jeff King
2026-04-02 4:15 ` [PATCH v2 07/12] pseudo-merge: fix disk reads from find_pseudo_merge() Jeff King
2026-04-02 4:15 ` [PATCH v2 08/12] skip_prefix(): check const match between in and out params Jeff King
2026-04-02 5:11 ` Junio C Hamano
2026-04-02 6:01 ` Jeff King
2026-04-02 15:50 ` Junio C Hamano
2026-04-02 15:41 ` Junio C Hamano
2026-04-03 11:13 ` Toon Claes
2026-04-04 5:42 ` [PATCH v2 13/12] git-compat-util: fix CONST_OUTPARAM typo and indentation Jeff King
2026-04-02 4:15 ` [PATCH v2 09/12] pkt-line: make packet_reader.line non-const Jeff King
2026-04-02 4:15 ` [PATCH v2 10/12] range-diff: drop const to fix strstr() warnings Jeff King
2026-04-02 4:15 ` Jeff King [this message]
2026-04-02 4:15 ` [PATCH v2 12/12] refs/files-backend: drop const to fix strchr() warning Jeff King
2026-04-03 11:14 ` [PATCH v2 0/12] fixing the remainder of the C23 strchr warnings Toon Claes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260402041514.GK3501239@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=collin.funk1@gmail.com \
--cc=git@grubix.eu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox