diff options
| author | Anna Zaks <ganna@apple.com> | 2011-12-16 18:28:50 +0000 |
|---|---|---|
| committer | Anna Zaks <ganna@apple.com> | 2011-12-16 18:28:50 +0000 |
| commit | e48ee503249329e1c7e0ed68c3d47e161eed04ec (patch) | |
| tree | b961367077d53706bd3f3460f94cb31dc97eb296 /clang/test/Analysis/taint-tester.c | |
| parent | cf2f8aab62fb77a8389914d4056c6e5e8301c306 (diff) | |
| download | bcm5719-llvm-e48ee503249329e1c7e0ed68c3d47e161eed04ec.tar.gz bcm5719-llvm-e48ee503249329e1c7e0ed68c3d47e161eed04ec.zip | |
[analyzer] Better stdin support.
llvm-svn: 146748
Diffstat (limited to 'clang/test/Analysis/taint-tester.c')
| -rw-r--r-- | clang/test/Analysis/taint-tester.c | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/clang/test/Analysis/taint-tester.c b/clang/test/Analysis/taint-tester.c index 476027f31bc..8c964e4ae2c 100644 --- a/clang/test/Analysis/taint-tester.c +++ b/clang/test/Analysis/taint-tester.c @@ -111,10 +111,6 @@ int fscanfTest(void) { fprintf(fp, "%s %d", s, t); // expected-warning + {{tainted}} fclose(fp); // expected-warning + {{tainted}} - // Check if we propagate taint from stdin when it's used in an assignment. - FILE *pfstd = stdin; - fscanf(pfstd, "%s %d", s, &t); // TODO: This should be tainted as well. - // Test fscanf and fopen. if((fp=fopen("test","r")) == 0) // expected-warning + {{tainted}} return 1; @@ -122,3 +118,35 @@ int fscanfTest(void) { fprintf(stdout, "%s %d", s, t); // expected-warning + {{tainted}} return 0; } + +// Check if we propagate taint from stdin when it's used in an assignment. +void stdinTest1() { + int i; + fscanf(stdin, "%d", &i); + int j = i; // expected-warning + {{tainted}} +} +void stdinTest2(FILE *pIn) { + FILE *p = stdin; + FILE *pp = p; + int ii; + + fscanf(pp, "%d", &ii); + int jj = ii;// expected-warning + {{tainted}} + + fscanf(p, "%d", &ii); + int jj2 = ii;// expected-warning + {{tainted}} + + ii = 3; + int jj3 = ii;// no warning + + p = pIn; + fscanf(p, "%d", &ii); + int jj4 = ii;// no warning +} + +void stdinTest3() { + FILE **ppp = &stdin; + int iii; + fscanf(*ppp, "%d", &iii); + int jjj = iii;// expected-warning + {{tainted}} +} |

