diff options
Diffstat (limited to 'clang/test/Analysis/taint-tester.cpp')
-rw-r--r-- | clang/test/Analysis/taint-tester.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/clang/test/Analysis/taint-tester.cpp b/clang/test/Analysis/taint-tester.cpp new file mode 100644 index 0000000..679fbc2 --- /dev/null +++ b/clang/test/Analysis/taint-tester.cpp @@ -0,0 +1,26 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=experimental.security.taint,debug.TaintTest %s -verify + +typedef struct _FILE FILE; +typedef __typeof(sizeof(int)) size_t; +extern FILE *stdin; +typedef long ssize_t; +ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict); +int printf(const char * __restrict, ...); +void free(void *ptr); + +struct GetLineTestStruct { + ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict); +}; + +void getlineTest(void) { + FILE *fp; + char *line = 0; + size_t len = 0; + ssize_t read; + struct GetLineTestStruct T; + + while ((read = T.getline(&line, &len, stdin)) != -1) { + printf("%s", line); // no warning + } + free(line); +} |