fune/tools/clang-tidy/test/clang-analyzer-unix.Malloc.cpp
Chris Peterson 9574957168 Bug 1475882 - clang-analyzer: Enable clang-analyzer-unix.Malloc check. r=andi
Check for memory leaks, double free, and use-after-free and offset problems involving malloc. There are currently no clang-analyzer-unix.Malloc warnings in mozilla-central!

https://clang-analyzer.llvm.org/available_checks.html

MozReview-Commit-ID: G32SlokD64O

--HG--
extra : source : a2c8ccd2da1968b64510569f12f4631c54fea2d8
extra : histedit_source : b42c3ce2c3f8132fc0b301e6309b5ad25192167c
2018-07-14 23:28:26 -07:00

37 lines
681 B
C++

// https://clang-analyzer.llvm.org/available_checks.html
#include "structures.h"
void test_malloc()
{
int *p = (int*) malloc(1);
free(p);
free(p); // warning: attempt to free released memory
}
void test_use_after_free()
{
int *p = (int*) malloc(sizeof(int));
free(p);
*p = 1; // warning: use after free
}
void test_leak()
{
int *p = (int*) malloc(1);
if (p)
return; // warning: memory is never released
}
void test_free_local()
{
int a[] = { 1 };
free(a); // warning: argument is not allocated by malloc
}
void test_free_offset()
{
int *p = (int*) malloc(sizeof(char));
p = p - 1;
free(p); // warning: argument to free() is offset by -4 bytes
}