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.