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

Reply via email to