brintos

brintos / llvm-project-archived public Read only

0
0
Text · 892 B · a419938 Raw
35 lines · cpp
1// RUN: %clang_analyze_cc1  -analyzer-checker=optin.taint,debug.TaintTest %s -verify2// expected-no-diagnostics3 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, ...);10int snprintf(char *, size_t, const char *, ...);11void 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 warning26  }27  free(line);28}29 30class opaque;31void testOpaqueClass(opaque *obj) {32  char buf[20];33  snprintf(buf, 20, "%p", obj); // don't crash trying to load *obj34}35