From 5b97efa82ebab6b4c58f43cbaff44d320c6a3dd2 Mon Sep 17 00:00:00 2001 From: Matt Whitlock Date: Sat, 7 Mar 2026 13:30:04 -0500 Subject: [PATCH] use const-correct types with strchr, strstr, etc. Because ccan/config.h #defines _GNU_SOURCE, glibc declares qualifier- preserving generic prototypes for the twelve "qualifier-losing search functions" (bsearch, bsearch_s, memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr, wmemchr), even in -std=gnu11 mode. Several places throughout the code base were calling these search functions and inadvertently stripping away the constness of their return values, triggering compilation errors due to -Werror. Fix up these call sites so that the assignments of their return values do not implicitly discard the const qualifier. Changelog-None --- common/wireaddr.c | 4 ++-- connectd/tor_autoservice.c | 2 +- db/db_sqlite3.c | 4 ++-- devtools/check-bolt.c | 2 +- plugins/spender/multifundchannel.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/common/wireaddr.c b/common/wireaddr.c index b110ed549050..c4e840ea80f5 100644 --- a/common/wireaddr.c +++ b/common/wireaddr.c @@ -291,10 +291,10 @@ char *fmt_wireaddr(const tal_t *ctx, const struct wireaddr *a) bool separate_address_and_port(const tal_t *ctx, const char *arg, char **addr, u16 *port) { - char *portcolon; + const char *portcolon; if (strstarts(arg, "[")) { - char *end = strchr(arg, ']'); + const char *end = strchr(arg, ']'); if (!end) return false; /* Copy inside [] */ diff --git a/connectd/tor_autoservice.c b/connectd/tor_autoservice.c index cc867995a22d..79d67c713247 100644 --- a/connectd/tor_autoservice.c +++ b/connectd/tor_autoservice.c @@ -201,7 +201,7 @@ static void negotiate_auth(struct rbuf *rbuf, const char *tor_password) tor_send_cmd(rbuf, "PROTOCOLINFO 1"); while ((line = tor_response_line(rbuf)) != NULL) { - const char *p; + char *p; if (!strstarts(line, "AUTH METHODS=")) continue; diff --git a/db/db_sqlite3.c b/db/db_sqlite3.c index d3c6f30f2c84..6ad0742b76af 100644 --- a/db/db_sqlite3.c +++ b/db/db_sqlite3.c @@ -464,8 +464,8 @@ static char **prepare_table_manip(const tal_t *ctx, struct db *db, const char *tablename) { sqlite3_stmt *stmt; - const char *sql; - char *cmd, *bracket; + const char *sql, *bracket; + char *cmd; char **parts; int err; struct db_sqlite3 *wrapper = (struct db_sqlite3 *)db->conn; diff --git a/devtools/check-bolt.c b/devtools/check-bolt.c index 95addc5915b9..e89990d6fcf8 100644 --- a/devtools/check-bolt.c +++ b/devtools/check-bolt.c @@ -236,7 +236,7 @@ static void fail_mismatch(const char *filename, static bool find_strings(const char *bolttext, char **strings, size_t nstrings) { const char *p = bolttext; - char *find; + const char *find; if (nstrings == 0) return true; diff --git a/plugins/spender/multifundchannel.c b/plugins/spender/multifundchannel.c index c7223867c612..ac2bd02c52a6 100644 --- a/plugins/spender/multifundchannel.c +++ b/plugins/spender/multifundchannel.c @@ -1846,7 +1846,7 @@ param_destinations_array(struct command *cmd, const char *name, json_for_each_arr(i, json_dest, tok) { struct multifundchannel_destination *dest; const char *id; - char *addrhint; + const char *addrhint; struct amount_sat *amount, *request_amt; bool *announce; struct amount_msat *push_msat;