]> 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 (GitLab job 6746518) <marka@isc.org>
Tue, 20 Jan 2026 06:00:50 +0000 (06:00 +0000)
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.

(cherry picked from commit af379e10ccbede22a38cdbee58c6a71c097221d2)

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

index 504a5fdd54d6046b2087ab68f9a7bd326bf1de05..a12c54bb44ebdb31ca81ebcdffa93512c0472674 100644 (file)
@@ -1820,7 +1820,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) {
                isc_result_t result;
index 51e261af5ecb38fadd389a1d6c02017228e2de00..94291d218ea4d565c58c92e8725cef7209e3353b 100644 (file)
@@ -1646,7 +1646,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;
@@ -1656,7 +1656,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]) {
@@ -1726,12 +1726,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;
                }
@@ -1742,13 +1745,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 6a42d22cd240a98ddda0dcf8911edf26ba12dd35..dfbe286e9a1f80363d0bea76567f51541abfa64c 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;
                        }