From 8382ea7692b3f9e7647898f0d5814cd142ea7f1f Mon Sep 17 00:00:00 2001 From: orbitcowboy Date: Fri, 3 Jun 2022 08:36:25 +0200 Subject: [PATCH] std.cfg: Improved configuration of strpbrk() and added regression tests. These cases were found in the wild (daca@home: ftp://ftp.de.debian.org/debian/pool/main/i/ion/ion_3.2.1+dfsg.orig.tar.gz, ion-open-source/contrib/dtnperf/dtnperf/src/utils.c:71:32: error: Invalid strpbrk() argument nr 2. A nul-terminated string is required. [invalidFunctionArgStr]). --- cfg/std.cfg | 1 + test/cfg/std.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/cfg/std.cfg b/cfg/std.cfg index c77a01700..8ecf30081 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -5020,6 +5020,7 @@ The obsolete function 'gets' is called. With 'gets' you'll get a buffer overrun + diff --git a/test/cfg/std.c b/test/cfg/std.c index 646fdf255..cf3cbea17 100644 --- a/test/cfg/std.c +++ b/test/cfg/std.c @@ -29,6 +29,19 @@ #include #include +char * invalidFunctionArgStr_strpbrk( const char *p ) +{ + const char search[] = { -42, -43, -44 }; + const char pattern[3] = { -42, -43, -44 }; + (void) strpbrk( "abc42", "42" ); + // cppcheck-suppress invalidFunctionArgStr + (void) strpbrk( search, "42" ); + // cppcheck-suppress invalidFunctionArgStr + (void) strpbrk( search, pattern ); + // cppcheck-suppress invalidFunctionArgStr + return strpbrk( p, pattern ); +} + int invalidFunctionArgStr_strncmp( const char *p ) { // No warning is expected for: