More weird compiler warnings - Mailing list pgsql-hackers

From Tom Lane
Subject More weird compiler warnings
Date
Msg-id 144536.1648326206@sss.pgh.pa.us
Whole thread Raw
Responses Re: More weird compiler warnings  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
serinus' experimental gcc whines about a few places in network.c:

../../../../../pgsql/src/backend/utils/adt/network.c: In function 'inetnot':
../../../../../pgsql/src/backend/utils/adt/network.c:1893:34: warning: writing 1 byte into a region of size 0
[-Wstringop-overflow=]
 1893 |                         pdst[nb] = ~pip[nb];
      |                         ~~~~~~~~~^~~~~~~~~~
../../../../../pgsql/src/include/utils/inet.h:27:23: note: at offset -1 into destination object 'ipaddr' of size 16
   27 |         unsigned char ipaddr[16];       /* up to 128 bits of address */
      |                       ^~~~~~
../../../../../pgsql/src/include/utils/inet.h:27:23: note: at offset -1 into destination object 'ipaddr' of size 16

The code in question looks like

    {
        int            nb = ip_addrsize(ip);
        unsigned char *pip = ip_addr(ip);
        unsigned char *pdst = ip_addr(dst);

        while (nb-- > 0)
            pdst[nb] = ~pip[nb];
    }

There's nothing actually wrong with this, but I'm wondering if
we could silence the warning by changing the loop condition to

        while (--nb >= 0)

which seems like it might be marginally more readable anyway.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: pgsql: Add 'basebackup_to_shell' contrib module.
Next
From: Tom Lane
Date:
Subject: Re: pgsql: Add 'basebackup_to_shell' contrib module.