diff options
author | Abel Kocsis <abelkocsis@cc.inf.elte.hu> | 2019-11-11 17:47:14 +0100 |
---|---|---|
committer | Abel Kocsis <abelkocsis@cc.inf.elte.hu> | 2019-11-11 17:47:14 +0100 |
commit | 8d288a0668a574863d52784084ff565c89f7366e (patch) | |
tree | 7babbb8d34d766b21049e65a09e2004a28235d97 /clang-tools-extra/test/clang-tidy | |
parent | 8cec7e0208f5b65790fd5c73b90d6d35944b07b1 (diff) | |
download | bcm5719-llvm-8d288a0668a574863d52784084ff565c89f7366e.tar.gz bcm5719-llvm-8d288a0668a574863d52784084ff565c89f7366e.zip |
[clang-tidy] Add bugprone-bad-signal-to-kill-thread check and its alias cert-pos44-c
Diffstat (limited to 'clang-tools-extra/test/clang-tidy')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/bugprone-bad-signal-to-kill-thread.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/bugprone-bad-signal-to-kill-thread.cpp b/clang-tools-extra/test/clang-tidy/bugprone-bad-signal-to-kill-thread.cpp new file mode 100644 index 00000000000..5de2001e26b --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/bugprone-bad-signal-to-kill-thread.cpp @@ -0,0 +1,38 @@ +// RUN: %check_clang_tidy %s bugprone-bad-signal-to-kill-thread %t + +#define SIGTERM 15 +#define SIGINT 2 +using pthread_t = int; +using pthread_attr_t = int; + +int pthread_create(pthread_t *thread, const pthread_attr_t *attr, + void *(*start_routine)(void *), void *arg); + +int pthread_kill(pthread_t thread, int sig); + +int pthread_cancel(pthread_t thread); + +void *test_func_return_a_pointer(void *foo); + +int main() { + int result; + pthread_t thread; + + if ((result = pthread_create(&thread, nullptr, test_func_return_a_pointer, 0)) != 0) { + } + if ((result = pthread_kill(thread, SIGTERM)) != 0) { + // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: thread should not be terminated by raising the 'SIGTERM' signal [bugprone-bad-signal-to-kill-thread] + } + + //compliant solution + if ((result = pthread_cancel(thread)) != 0) { + } + + if ((result = pthread_kill(thread, SIGINT)) != 0) { + } + if ((result = pthread_kill(thread, 0xF)) != 0) { + // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: thread should not be terminated by raising the 'SIGTERM' signal [bugprone-bad-signal-to-kill-thread] + } + + return 0; +} |