summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/taint-generic.c
diff options
context:
space:
mode:
authorKristof Umann <dkszelethus@gmail.com>2019-03-05 12:42:59 +0000
committerKristof Umann <dkszelethus@gmail.com>2019-03-05 12:42:59 +0000
commit855478328b59e29bece3856895f2ec899508ea87 (patch)
tree38c90e775a0cb147229aae2f2fdee9b2b3a93f59 /clang/test/Analysis/taint-generic.c
parent8a3b7d390c8108031b76242158ea86e4a9b0f3ac (diff)
downloadbcm5719-llvm-855478328b59e29bece3856895f2ec899508ea87.tar.gz
bcm5719-llvm-855478328b59e29bece3856895f2ec899508ea87.zip
[analyzer] Fix taint propagation in GenericTaintChecker
The gets function has no SrcArgs. Because the default value for isTainted was false, it didn't mark its DstArgs as tainted. Patch by Gábor Borsik! Differential Revision: https://reviews.llvm.org/D58828 llvm-svn: 355396
Diffstat (limited to 'clang/test/Analysis/taint-generic.c')
-rw-r--r--clang/test/Analysis/taint-generic.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/test/Analysis/taint-generic.c b/clang/test/Analysis/taint-generic.c
index 30529503e5a..42e390dddef 100644
--- a/clang/test/Analysis/taint-generic.c
+++ b/clang/test/Analysis/taint-generic.c
@@ -2,6 +2,7 @@
// RUN: %clang_analyze_cc1 -DFILE_IS_STRUCT -analyzer-checker=alpha.security.taint,core,alpha.security.ArrayBoundV2 -Wno-format-security -verify %s
int scanf(const char *restrict format, ...);
+char *gets(char *str);
int getchar(void);
typedef struct _FILE FILE;
@@ -142,6 +143,12 @@ void testTaintSystemCall3() {
system(buffern2); // expected-warning {{Untrusted data is passed to a system call}}
}
+void testGets() {
+ char str[50];
+ gets(str);
+ system(str); // expected-warning {{Untrusted data is passed to a system call}}
+}
+
void testTaintedBufferSize() {
size_t ts;
scanf("%zd", &ts);
OpenPOWER on IntegriCloud