diff options
author | Jordan Rose <jordan_rose@apple.com> | 2014-08-20 16:58:09 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2014-08-20 16:58:09 +0000 |
commit | ba129af62aab1eaeb44ae28a2a25fb326e9509f8 (patch) | |
tree | 6d8c9be0ae252f204d3f868b9140471aa4555fe5 /clang/test/Analysis/unix-api.c | |
parent | cd4db5c6d2993fcb0d0836032a4637b8f8eabb62 (diff) | |
download | bcm5719-llvm-ba129af62aab1eaeb44ae28a2a25fb326e9509f8.tar.gz bcm5719-llvm-ba129af62aab1eaeb44ae28a2a25fb326e9509f8.zip |
[analyzer] UnixAPI: Check that the third argument to open(2) (if present) is an integer.
Patch by Daniel Fahlgren.
llvm-svn: 216079
Diffstat (limited to 'clang/test/Analysis/unix-api.c')
-rw-r--r-- | clang/test/Analysis/unix-api.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/clang/test/Analysis/unix-api.c b/clang/test/Analysis/unix-api.c index 4146822e21b..86c702d7259 100644 --- a/clang/test/Analysis/unix-api.c +++ b/clang/test/Analysis/unix-api.c @@ -25,3 +25,51 @@ void open_2(const char *path) { if (fd > -1) close(fd); } + +void open_3(const char *path) { + int fd; + fd = open(path, O_RDONLY, NULL); // expected-warning{{Third argument to 'open' is not an integer}} + if (fd > -1) + close(fd); +} + +void open_4(const char *path) { + int fd; + fd = open(path, O_RDONLY, ""); // expected-warning{{Third argument to 'open' is not an integer}} + if (fd > -1) + close(fd); +} + +void open_5(const char *path) { + int fd; + struct { + int val; + } st = {0}; + fd = open(path, O_RDONLY, st); // expected-warning{{Third argument to 'open' is not an integer}} + if (fd > -1) + close(fd); +} + +void open_6(const char *path) { + int fd; + struct { + int val; + } st = {0}; + fd = open(path, O_RDONLY, st.val); // no-warning + if (fd > -1) + close(fd); +} + +void open_7(const char *path) { + int fd; + fd = open(path, O_RDONLY, &open); // expected-warning{{Third argument to 'open' is not an integer}} + if (fd > -1) + close(fd); +} + +void open_8(const char *path) { + int fd; + fd = open(path, O_RDONLY, 0.0f); // expected-warning{{Third argument to 'open' is not an integer}} + if (fd > -1) + close(fd); +} |