mkimg: Const correctness for C23

On some platforms, e.g. Linux Clang 22.1.8 / glibc 2.43, strchr()
now implements the C23 behaviour where passing a const pointer to
strchr() also returns a const pointer.  This breaks mkimg during
the bootstrap build, since it assumes the return value is always
a mutable pointer.

Make the existing 'sep' pointer const to fix the first case, and
for the second, introduce a new non-const pointer for strchr,
since we do modify the result in that case.

MFC after:	1 week
Reviewed by:	markj
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D58493
This commit is contained in:
Lexi Winter committed 2026-08-03 15:08:13 +01:00
1 parent 2296c39a9e
commit 9fd8f5e761
1 file changed
+7 -7
+7 -7
View File
@@ -248,7 +248,8 @@ static int
parse_part(const char *spec)
{
struct part *part;
char *sep;
const char *sep;
char *asep;
size_t len;
int error;
@@ -301,15 +302,14 @@ parse_part(const char *spec)
goto errout;
}
spec = part->alias;
sep = strchr(spec, '/');
if (sep != NULL) {
*sep++ = '\0';
if (strlen(part->alias) == 0 || strlen(sep) == 0) {
asep = strchr(part->alias, '/');
if (asep != NULL) {
*asep++ = '\0';
if (strlen(part->alias) == 0 || strlen(asep) == 0) {
error = EINVAL;
goto errout;
}
part->label = strdup(sep);
part->label = strdup(asep);
if (part->label == NULL) {
error = ENOMEM;
goto errout;