blob: ca7b729f2691dfd144ae457c31579bafc38b5b99 [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);
Jordan Rosebf3d71e2013-08-30 19:17:26 +00009int printf(const char * __restrict, ...);
10int snprintf(char *, size_t, const char *, ...);
Anna Zaksb9ac30c2012-01-24 19:32:25 +000011void free(void *ptr);
12
13struct GetLineTestStruct {
14 ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
15};
16
17void getlineTest(void) {
18 FILE *fp;
19 char *line = 0;
20 size_t len = 0;
21 ssize_t read;
22 struct GetLineTestStruct T;
23
24 while ((read = T.getline(&line, &len, stdin)) != -1) {
25 printf("%s", line); // no warning
26 }
27 free(line);
28}
Jordan Rosebf3d71e2013-08-30 19:17:26 +000029
30class opaque;
31void testOpaqueClass(opaque *obj) {
32 char buf[20];
33 snprintf(buf, 20, "%p", obj); // don't crash trying to load *obj
34}
35