From 3e43c093dfca396350807a7c33346af10f67cef7 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Tue, 27 Jun 2023 17:20:53 -0400 Subject: [PATCH 81/98] FIXME: add c-c++-common/analyzer/scanf.c --- gcc/testsuite/c-c++-common/analyzer/scanf.c | 54 +++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 gcc/testsuite/c-c++-common/analyzer/scanf.c diff --git a/gcc/testsuite/c-c++-common/analyzer/scanf.c b/gcc/testsuite/c-c++-common/analyzer/scanf.c new file mode 100644 index 000000000000..1f59ea832f04 --- /dev/null +++ b/gcc/testsuite/c-c++-common/analyzer/scanf.c @@ -0,0 +1,54 @@ +// FIXME +/* + https://en.cppreference.com/w/c/io/fscanf + https://en.cppreference.com/w/c/io/vfscanf +*/ +#if 0 +int scanf( const char *format, ... ); + (until C99) +int scanf( const char *restrict format, ... ); + (since C99) + (2) +int fscanf( FILE *stream, const char *format, ... ); + (until C99) +int fscanf( FILE *restrict stream, const char *restrict format, ... ); + (since C99) + (3) +int sscanf( const char *buffer, const char *format, ... ); + (until C99) +int sscanf( const char *restrict buffer, const char *restrict format, ... ); + (since C99) +int scanf_s(const char *restrict format, ...); + (4) (since C11) +int fscanf_s(FILE *restrict stream, const char *restrict format, ...); + (5) (since C11) +int sscanf_s(const char *restrict buffer, const char *restrict format, ...); + (6) (since C11) + +int vscanf( const char *restrict format, va_list vlist ); + (1) (since C99) +int vfscanf( FILE *restrict stream, const char *restrict format, + va_list vlist ); + (2) (since C99) +int vsscanf( const char *restrict buffer, const char *restrict format, + va_list vlist ); + (3) (since C99) +int vscanf_s(const char *restrict format, va_list vlist); + (4) (since C11) +int vfscanf_s( FILE *restrict stream, const char *restrict format, + va_list vlist); + (5) (since C11) +int vsscanf_s( const char *restrict buffer, const char *restrict format, + va_list vlist); + (6) (since C11) +#endif + +/* FIXME: or should we use formatting attributes? */ + +/* TODO: test coverage: + - NULL format string + - NULL stream + - correct args (for the various args) + - incorrect args + - buffer overflows + */ -- 2.49.0