blob: f97eefb950e3b25de8d34ab894bb8fd7140b8b48 [file] [log] [blame]
Ted Kremenekcdc3a892012-08-24 20:39:55 +00001// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
Andy Gibbs8e8fb3b2012-10-19 12:44:48 +00002// expected-no-diagnostics
Anna Zaksb9ac30c2012-01-24 19:32:25 +00003
4typedef struct _FILE FILE;
5typedef __typeof(sizeof(int)) size_t;
6extern FILE *stdin;
7typedef long ssize_t;
8ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
9int printf(const char * __restrict, ...);
10void free(void *ptr);
11
12struct GetLineTestStruct {
13 ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
14};
15
16void getlineTest(void) {
17 FILE *fp;
18 char *line = 0;
19 size_t len = 0;
20 ssize_t read;
21 struct GetLineTestStruct T;
22
23 while ((read = T.getline(&line, &len, stdin)) != -1) {
24 printf("%s", line); // no warning
25 }
26 free(line);
27}