https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117376
Bug ID: 117376
Summary: Spammy -Wstringop-overflow output with memcpy
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
CC: qing.zhao at oracle dot com
Target Milestone: ---
Created attachment 59506
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59506&action=edit
libcares_la-ares_dns_record.i.xz
I initially thought this was to do with Qing's -fdiagnostics-detials patch but
it isn't.
So, this is either a bug report about:
a) this is too verbose and not super useful IMO, or
b) -fdiagnostics-details should try do something here to make it nicer
IMO the output is far too verbose and not particularly insightful.
--
```
$ gcc -c ./record/.libs/libcares_la-ares_dns_record.i -O3 -std=c90
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_record.c:
In function ‘ares_dns_rr_set_addr6’:
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_record.c:1127:3:
warning: writing 16 bytes into a region of size between 1 and 8
[-Wstringop-overflow=]
1127 | memcpy(a, addr, sizeof(*a));
| ^
In file included from
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/ares_private.h:59,
from
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_record.c:26:
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:101:18:
note: destination object ‘addr’ of size 4
101 | struct in_addr addr;
| ^~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:142:17:
note: destination object ‘algorithm’ of size 1
142 | unsigned char algorithm;
| ^~~~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:147:18:
note: destination object ‘key_tag’ of size 2
147 | unsigned short key_tag;
| ^~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:116:16:
note: destination object ‘refresh’ of size 4
116 | unsigned int refresh;
| ^~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:118:16:
note: destination object ‘expire’ of size 4
118 | unsigned int expire;
| ^~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:170:9:
note: destination object ‘replacement’ of size 8
170 | char *replacement;
| ^~~~~~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:114:9:
note: destination object ‘rname’ of size 8
114 | char *rname;
| ^~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:146:16:
note: destination object ‘inception’ of size 4
146 | unsigned int inception;
| ^~~~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:198:17:
note: destination object ‘params’ of size 8
198 | ares_array_t *params; /*!< Type is ares_dns_optval_t */
| ^~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:119:16:
note: destination object ‘minimum’ of size 4
119 | unsigned int minimum;
| ^~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:117:16:
note: destination object ‘retry’ of size 4
117 | unsigned int retry;
| ^~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:143:17:
note: destination object ‘labels’ of size 1
143 | unsigned char labels;
| ^~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:148:9:
note: destination object ‘signers_name’ of size 8
148 | char *signers_name;
| ^~~~~~~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:189:17:
note: destination object ‘selector’ of size 1
189 | unsigned char selector;
| ^~~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:144:16:
note: destination object ‘original_ttl’ of size 4
144 | unsigned int original_ttl;
| ^~~~~~~~~~~~
/var/tmp/portage/net-dns/c-ares-1.34.2/work/c-ares-1.34.2/src/lib/record/ares_dns_private.h:115:16:
note: destination object ‘serial’ of size 4
115 | unsigned int serial;
| ^~~~~~
```