]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use const pointer with strchr of const pointer
authorMark Andrews <marka@isc.org>
Fri, 19 Dec 2025 01:32:33 +0000 (12:32 +1100)
committerMark Andrews <marka@isc.org>
Tue, 20 Jan 2026 05:23:58 +0000 (16:23 +1100)
C23 now has qualifier preserving standard functions for strchr,
bsearch, strpbrk, strrchr, strstr, memchr.  There where a few places
where the return value was not assigned to a const qualified pointer.
These have been fixed.

bin/delv/delv.c
bin/tools/mdig.c
lib/isc/file.c

index 0d69fb79d356ff7a2a8ad6540f662be2539a32aa..c149eedaf4ab8e66f066e8da0e4932bcea3d5076 100644 (file)
@@ -1754,7 +1754,7 @@ append_str(const char *text, int len, char **p, char *end) {
 
 static isc_result_t
 reverse_octets(const char *in, char **p, char *end) {
-       char *dot = strchr(in, '.');
+       const char *dot = strchr(in, '.');
        int len;
        if (dot != NULL) {
                RETERR(reverse_octets(dot + 1, p, end));
index 4a25eeecf8c3b7d413933730344db939e223e5d5..6240401bb36cff342c6eb0c049dc37540f38dbdc 100644 (file)
@@ -1605,7 +1605,7 @@ static bool
 dash_option(const char *option, char *next, struct query *query, bool global,
            bool *setname) {
        char opt;
-       const char *value;
+       const char *value, *oldvalue;
        isc_result_t result;
        bool value_from_next;
        isc_consttextregion_t tr;
@@ -1615,7 +1615,7 @@ dash_option(const char *option, char *next, struct query *query, bool global,
        struct in_addr in4;
        struct in6_addr in6;
        in_port_t srcport;
-       char *hash;
+       const char *hash;
        uint32_t num;
 
        while (strpbrk(option, single_dash_opts) == &option[0]) {
@@ -1685,12 +1685,15 @@ dash_option(const char *option, char *next, struct query *query, bool global,
        case 'b':
                GLOBAL();
                hash = strchr(value, '#');
+               oldvalue = value;
                if (hash != NULL) {
                        result = parse_uint(&num, hash + 1, MAXPORT,
                                            "port number");
                        CHECKM("parse_uint(srcport)", result);
                        srcport = num;
-                       *hash = '\0';
+                       snprintf(textname, sizeof(textname), "%.*s",
+                                (int)(hash - value), value);
+                       value = textname;
                } else {
                        srcport = 0;
                }
@@ -1701,13 +1704,7 @@ dash_option(const char *option, char *next, struct query *query, bool global,
                        isc_sockaddr_fromin(&srcaddr, &in4, srcport);
                        isc_net_disableipv6();
                } else {
-                       if (hash != NULL) {
-                               *hash = '#';
-                       }
-                       fatal("invalid address %s", value);
-               }
-               if (hash != NULL) {
-                       *hash = '#';
+                       fatal("invalid address %s", oldvalue);
                }
                have_src = true;
                return value_from_next;
index fbf0b80fb1f18da8c7d72ae6c24b631d06017dcf..d01bf390cfa912aebe05fb063ab8cfa9e7cab1ef 100644 (file)
@@ -353,7 +353,7 @@ isc_file_openuniquemode(char *templet, int mode, FILE **fp) {
                        return isc__errno2result(errno);
                }
                for (cp = x;;) {
-                       char *t;
+                       const char *t;
                        if (*cp == '\0') {
                                return ISC_R_FAILURE;
                        }