]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix strstr const inheritance issue in test code
authorMark Andrews <marka@isc.org>
Tue, 7 Apr 2026 22:57:05 +0000 (08:57 +1000)
committerMark Andrews <marka@isc.org>
Tue, 7 Apr 2026 22:57:05 +0000 (08:57 +1000)
A strstr call discarded the const attribute.  Rework the code
preserving the const attribute.

bin/tests/system/rpz/testlib/test-data.c

index 8ccebd6579e8337df54fb6e9159359fd66d14bb1..7d3c625f7bee4b31846dc112471126db27776463 100644 (file)
@@ -865,8 +865,8 @@ apply_update(const char *updstr, trpz_result_t **presults, size_t *pnresults,
                }
 
        } else if (!strcasecmp(rrbuf, "TXT")) {
-               char *ftext = NULL;
-
+               const char *ftext = NULL;
+               size_t len;
                ftext = strstr(updstr, databuf);
                if (ftext == NULL) {
                        fprintf(stderr, "Error parsing TXT record: \"%s\"\n",
@@ -875,15 +875,19 @@ apply_update(const char *updstr, trpz_result_t **presults, size_t *pnresults,
                }
 
                if (*ftext == '"') {
-                       *ftext++ = 0;
+                       ftext++;
 
-                       if (ftext[strlen(ftext) - 1] == '"') {
-                               ftext[strlen(ftext) - 1] = 0;
+                       len = strlen(ftext);
+                       if (len > 0 && ftext[len - 1] == '"') {
+                               len--;
                        }
+               } else {
+                       len = strlen(ftext);
                }
 
-               strncpy(databuf, ftext, sizeof(databuf));
-               databuf[sizeof(databuf) - 1] = 0;
+               strncpy(databuf, ftext,
+                       len < sizeof(databuf) ? len : sizeof(databuf));
+               databuf[len < sizeof(databuf) ? len : sizeof(databuf) - 1] = 0;
                policy = LIBRPZ_POLICY_RECORD;
        } else if (!strcasecmp(rrbuf, "DNAME")) {
                policy = LIBRPZ_POLICY_RECORD;