summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/clang/docs/analyzer/checkers/unix_malloc_example.c
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 14:31:31 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 14:31:31 +0000
commite5dd70708596ae51455a0ffa086a00c5b29f8583 (patch)
tree5d676f27b570bacf71e786c3b5cff3e6f6679b59 /gnu/llvm/clang/docs/analyzer/checkers/unix_malloc_example.c
parentImport LLVM 10.0.0 release including clang, lld and lldb. (diff)
downloadwireguard-openbsd-e5dd70708596ae51455a0ffa086a00c5b29f8583.tar.xz
wireguard-openbsd-e5dd70708596ae51455a0ffa086a00c5b29f8583.zip
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom tested by plenty
Diffstat (limited to 'gnu/llvm/clang/docs/analyzer/checkers/unix_malloc_example.c')
-rw-r--r--gnu/llvm/clang/docs/analyzer/checkers/unix_malloc_example.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/gnu/llvm/clang/docs/analyzer/checkers/unix_malloc_example.c b/gnu/llvm/clang/docs/analyzer/checkers/unix_malloc_example.c
new file mode 100644
index 00000000000..68c5a4a8f1c
--- /dev/null
+++ b/gnu/llvm/clang/docs/analyzer/checkers/unix_malloc_example.c
@@ -0,0 +1,30 @@
+
+void test() {
+ int *p = malloc(1);
+ free(p);
+ free(p); // warn: attempt to free released memory
+}
+
+void test() {
+ int *p = malloc(sizeof(int));
+ free(p);
+ *p = 1; // warn: use after free
+}
+
+void test() {
+ int *p = malloc(1);
+ if (p)
+ return; // warn: memory is never released
+}
+
+void test() {
+ int a[] = { 1 };
+ free(a); // warn: argument is not allocated by malloc
+}
+
+void test() {
+ int *p = malloc(sizeof(char));
+ p = p - 1;
+ free(p); // warn: argument to free() is offset by -4 bytes
+}
+