]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Address GCC 9.1 -O3 compilation warnings
authorMichał Kępień <michal@isc.org>
Fri, 31 May 2019 12:34:34 +0000 (14:34 +0200)
committerMichał Kępień <michal@isc.org>
Tue, 11 Jun 2019 08:19:04 +0000 (10:19 +0200)
Compiling with -O3 triggers the following warnings with GCC 9.1:

    task.c: In function ‘isc_taskmgr_create’:
    task.c:1386:43: warning: ‘%04u’ directive output may be truncated writing between 4 and 10 bytes into a region of size 6 [-Wformat-truncation=]
     1386 |   snprintf(name, sizeof(name), "isc-worker%04u", i);
          |                                           ^~~~
    task.c:1386:32: note: directive argument in the range [0, 4294967294]
     1386 |   snprintf(name, sizeof(name), "isc-worker%04u", i);
          |                                ^~~~~~~~~~~~~~~~
    task.c:1386:3: note: ‘snprintf’ output between 15 and 21 bytes into a destination of size 16
     1386 |   snprintf(name, sizeof(name), "isc-worker%04u", i);
          |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    private_test.c: In function ‘private_nsec3_totext_test’:
    private_test.c:113:9: warning: array subscript 4 is outside array bounds of ‘uint32_t[1]’ {aka ‘unsigned int[1]’} [-Warray-bounds]
      113 |  while (*sp == '\0' && slen > 0) {
          |         ^~~
    private_test.c:106:11: note: while referencing ‘salt’
      106 |  uint32_t salt;
          |           ^~~~

Prevent these warnings from being triggered by increasing the size of
the relevant array (task.c) and reordering conditions (private_test.c).

(cherry picked from commit ce796ac1f4bf6c64ad0e8be937933309e6942c83)

lib/dns/tests/private_test.c
lib/isc/task.c

index 517bb1a14703463f2cb2f5357e9772932996425e..ee3def20470eb8d47f8ef28ee95f31e656e5c24a 100644 (file)
@@ -110,7 +110,7 @@ make_nsec3(nsec3_testcase_t *testcase, dns_rdata_t *private,
        /* for simplicity, we're using a maximum salt length of 4 */
        salt = htonl(testcase->salt);
        sp = (unsigned char *) &salt;
-       while (*sp == '\0' && slen > 0) {
+       while (slen > 0 && *sp == '\0') {
                slen--;
                sp++;
        }
index 96b24e737439988d319eea345fa18016acaced01..8d6d409d35caed1483a93d03f46ac999e9ef056a 100644 (file)
@@ -1382,7 +1382,7 @@ isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers,
                RUNTIME_CHECK(isc_thread_create(run, &manager->queues[i],
                                                &manager->queues[i].thread)
                              == ISC_R_SUCCESS);
-               char name[16];
+               char name[21];
                snprintf(name, sizeof(name), "isc-worker%04u", i);
                isc_thread_setname(manager->queues[i].thread, name);
        }