https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104854
Bug ID: 104854
Summary: [11 Regression] -Wstringop-overread should not warn
for strnlen and strndup
Product: gcc
Version: 11.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: siddhesh at gcc dot gnu.org
Target Milestone: ---
The only times that strnlen and strndup can result in an actual overread is:
- The source is zero sized
or
- The source is not NULL terminated
In the current state something as trivial as the following:
char *
foo (size_t size)
{
return __builtin_strndup ("test", size);
}
char *
bar (void)
{
return foo (20);
}
issues a warning when the code is harmless. This is probably better suited as
a static analysis heuristic/suggestion than as a compiler warning that tends to
suggest that something is more likely wrong than not.