From: Claudio Jeker Subject: bgpd: more const correctness To: tech@openbsd.org Date: Wed, 30 Sep 2026 09:30:58 +0200 On fedora44 I see the following new warnings: ../../../openbgpd-portable/src/bgpd/parse.y: In function ‘parse_flags’: ../../../openbgpd-portable/src/bgpd/parse.y:5676:24: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 5676 | if ((q = strchr(flags, *p)) == NULL) | ^ ../../../openbgpd-portable/src/bgpctl/parser.c: In function ‘parse_prefix’: ../../../openbgpd-portable/src/bgpctl/parser.c:1012:16: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 1012 | if ((p = strrchr(word, '/')) != NULL) { | ^ This is because C23 uses type-generic versions of strchr / strrchr. The fix is simple since in both cases p and q can also be const. -- :wq Claudio Index: bgpctl/parser.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpctl/parser.c,v diff -u -p -r1.141 parser.c --- bgpctl/parser.c 24 Sep 2026 11:41:41 -0000 1.141 +++ bgpctl/parser.c 30 Sep 2026 07:15:33 -0000 @@ -1000,8 +1000,8 @@ parse_prefix(const char *word, size_t wo uint8_t *prefixlen) { struct bgpd_addr tmp; - char *p, *ps; - const char *errstr; + const char *p, *errstr; + char *ps; int mask = -1; if (word == NULL) Index: bgpd/parse.y =================================================================== RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v diff -u -p -r1.506 parse.y --- bgpd/parse.y 24 Sep 2026 11:41:41 -0000 1.506 +++ bgpd/parse.y 30 Sep 2026 07:14:13 -0000 @@ -5656,7 +5656,8 @@ static int parse_flags(char *s) { const char *flags = FLOWSPEC_TCP_FLAG_STRING; - char *p, *q; + const char *q; + char *p; uint8_t f = 0; if (curflow->type == FLOWSPEC_TYPE_FRAG) {