glibc 2.43 enables _ISOC23_SOURCE via _GNU_SOURCE, activating type-generic macros for strpbrk/strchr/strstr that return const char * when given a const char * input, surfacing const violations as hard compile errors.
The config_parse_opt* functions declared their src/data/opt parameters const but performed in-place tokenisation by writing through the pointer (e.g. *sep = 0). All callers pass mutable buffers (optarg or locally allocated strings), so drop the const qualifiers throughout. Signed-off-by: Dustin Lundquist <[email protected]> --- src/config.c | 12 ++++++------ src/config.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/config.c b/src/config.c index 54e2d35..614ff4b 100644 --- a/src/config.c +++ b/src/config.c @@ -335,7 +335,7 @@ static int config_parse_opt_u8(const char *src, uint8_t **dst) return script_unhexlify(*dst, len, src); } -static int config_parse_opt_string(const char *src, uint8_t **dst, const bool array) +static int config_parse_opt_string(char *src, uint8_t **dst, const bool array) { int o_len = 0; char *sep = strpbrk(src, ARRAY_SEP); @@ -368,7 +368,7 @@ static int config_parse_opt_string(const char *src, uint8_t **dst, const bool ar return o_len; } -static int config_parse_opt_dns_string(const char *src, uint8_t **dst, const bool array) +static int config_parse_opt_dns_string(char *src, uint8_t **dst, const bool array) { int o_len = 0; char *sep = strpbrk(src, ARRAY_SEP); @@ -405,7 +405,7 @@ static int config_parse_opt_dns_string(const char *src, uint8_t **dst, const boo return o_len; } -static int config_parse_opt_ip6(const char *src, uint8_t **dst, const bool array) +static int config_parse_opt_ip6(char *src, uint8_t **dst, const bool array) { int o_len = 0; char *sep = strpbrk(src, ARRAY_SEP); @@ -439,7 +439,7 @@ static int config_parse_opt_ip6(const char *src, uint8_t **dst, const bool array return o_len; } -static int config_parse_opt_user_class(const char *src, uint8_t **dst, const bool array) +static int config_parse_opt_user_class(char *src, uint8_t **dst, const bool array) { int o_len = 0; char *sep = strpbrk(src, ARRAY_SEP); @@ -510,7 +510,7 @@ int config_add_opt(const uint16_t code, const uint8_t *data, const uint16_t len) return 0; } -int config_parse_opt_data(const char *data, uint8_t **dst, const unsigned int type, +int config_parse_opt_data(char *data, uint8_t **dst, const unsigned int type, const bool array) { int ret = 0; @@ -544,7 +544,7 @@ int config_parse_opt_data(const char *data, uint8_t **dst, const unsigned int ty return ret; } -int config_parse_opt(const char *opt) +int config_parse_opt(char *opt) { uint32_t optn; char *data; diff --git a/src/config.h b/src/config.h index 91713de..1f85942 100644 --- a/src/config.h +++ b/src/config.h @@ -130,8 +130,8 @@ bool config_set_auth_token(const char* token); void config_set_client_opt_cfg(struct odhcp6c_opt_cfg *opt_cfg); int config_add_opt(const uint16_t code, const uint8_t *data, const uint16_t len); -int config_parse_opt_data(const char *data, uint8_t **dst, const unsigned int type, const bool array); -int config_parse_opt(const char *opt); +int config_parse_opt_data(char *data, uint8_t **dst, const unsigned int type, const bool array); +int config_parse_opt(char *opt); void config_apply_dhcp_rtx(struct dhcpv6_retx* dhcpv6_retx); _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
