Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ void af2() {
void *p = my_malloc(12);
my_free(p);
free(p);
// CHECK: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
// CHECK: warning: Attempt to release already released memory [clang-analyzer-unix.Malloc]
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ void f() {
int *p = new int(42);
delete p;
delete p;
// CHECK: warning: Attempt to free released memory [clang-analyzer-cplusplus.NewDelete]
// CHECK: warning: Attempt to release already released memory [clang-analyzer-cplusplus.NewDelete]
}

void g() {
void *q = malloc(132);
free(q);
free(q);
// CHECK: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
// CHECK: warning: Attempt to release already released memory [clang-analyzer-unix.Malloc]
}
2 changes: 1 addition & 1 deletion clang/docs/analyzer/checkers/unix_malloc_example.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
void test() {
int *p = malloc(1);
free(p);
free(p); // warn: attempt to free released memory
free(p); // warn: attempt to release already released memory
}

void test() {
Expand Down
6 changes: 3 additions & 3 deletions clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2693,7 +2693,7 @@ void MallocChecker::HandleUseAfterFree(CheckerContext &C, SourceRange Range,
Frontend->UseFreeBug,
AF.Kind == AF_InnerBuffer
? "Inner pointer of container used after re/deallocation"
: "Use of memory after it is freed",
: "Use of memory after it is released",
N);

R->markInteresting(Sym);
Expand Down Expand Up @@ -2721,8 +2721,8 @@ void MallocChecker::HandleDoubleFree(CheckerContext &C, SourceRange Range,
if (ExplodedNode *N = C.generateErrorNode()) {
auto R = std::make_unique<PathSensitiveBugReport>(
Frontend->DoubleFreeBug,
(Released ? "Attempt to free released memory"
: "Attempt to free non-owned memory"),
(Released ? "Attempt to release already released memory"
: "Attempt to release non-owned memory"),
N);
if (Range.isValid())
R->addRange(Range);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
</array>
<key>depth</key><integer>0</integer>
<key>extended_message</key>
<string>Attempt to free released memory</string>
<string>Attempt to release already released memory</string>
<key>message</key>
<string>Attempt to free released memory</string>
<string>Attempt to release already released memory</string>
</dict>
<dict>
<key>kind</key><string>control</string>
Expand Down Expand Up @@ -232,7 +232,7 @@
</array>
</dict>
</array>
<key>description</key><string>Attempt to free released memory</string>
<key>description</key><string>Attempt to release already released memory</string>
<key>category</key><string>Memory error</string>
<key>type</key><string>Double free</string>
<key>check_name</key><string>cplusplus.NewDelete</string>
Expand Down Expand Up @@ -456,12 +456,12 @@
</array>
<key>depth</key><integer>0</integer>
<key>extended_message</key>
<string>Attempt to free released memory</string>
<string>Attempt to release already released memory</string>
<key>message</key>
<string>Attempt to free released memory</string>
<string>Attempt to release already released memory</string>
</dict>
</array>
<key>description</key><string>Attempt to free released memory</string>
<key>description</key><string>Attempt to release already released memory</string>
<key>category</key><string>Memory error</string>
<key>type</key><string>Double free</string>
<key>check_name</key><string>cplusplus.NewDelete</string>
Expand Down
12 changes: 6 additions & 6 deletions clang/test/Analysis/Inputs/expected-plists/malloc-plist.c.plist
Original file line number Diff line number Diff line change
Expand Up @@ -1725,12 +1725,12 @@
</array>
<key>depth</key><integer>0</integer>
<key>extended_message</key>
<string>Use of memory after it is freed</string>
<string>Use of memory after it is released</string>
<key>message</key>
<string>Use of memory after it is freed</string>
<string>Use of memory after it is released</string>
</dict>
</array>
<key>description</key><string>Use of memory after it is freed</string>
<key>description</key><string>Use of memory after it is released</string>
<key>category</key><string>Memory error</string>
<key>type</key><string>Use-after-free</string>
<key>check_name</key><string>unix.Malloc</string>
Expand Down Expand Up @@ -2985,12 +2985,12 @@
</array>
<key>depth</key><integer>0</integer>
<key>extended_message</key>
<string>Use of memory after it is freed</string>
<string>Use of memory after it is released</string>
<key>message</key>
<string>Use of memory after it is freed</string>
<string>Use of memory after it is released</string>
</dict>
</array>
<key>description</key><string>Use of memory after it is freed</string>
<key>description</key><string>Use of memory after it is released</string>
<key>category</key><string>Memory error</string>
<key>type</key><string>Use-after-free</string>
<key>check_name</key><string>unix.Malloc</string>
Expand Down
2 changes: 1 addition & 1 deletion clang/test/Analysis/Inputs/overloaded-delete-in-header.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ void DeleteInHeader::operator delete(void *ptr) {

::operator delete(ptr);

self->data = 2; // expected-warning {{Use of memory after it is freed [cplusplus.NewDelete]}}
self->data = 2; // expected-warning {{Use of memory after it is released [cplusplus.NewDelete]}}
}

#endif // OVERLOADED_DELETE_IN_SYSTEM_HEADER
10 changes: 5 additions & 5 deletions clang/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
void testMallocDoubleFree() {
int *p = (int *)malloc(sizeof(int));
free(p);
free(p); // expected-warning{{Attempt to free released memory}}
free(p); // expected-warning{{Attempt to release already released memory}}
}

void testMallocLeak() {
Expand All @@ -19,7 +19,7 @@ void testMallocLeak() {
void testMallocUseAfterFree() {
int *p = (int *)malloc(sizeof(int));
free(p);
int j = *p; // expected-warning{{Use of memory after it is freed}}
int j = *p; // expected-warning{{Use of memory after it is released}}
}

void testMallocBadFree() {
Expand All @@ -46,7 +46,7 @@ void testMismatchedDeallocator() {
void testNewDoubleFree() {
int *p = new int;
delete p;
delete p; // expected-warning{{Attempt to free released memory}}
delete p; // expected-warning{{Attempt to release already released memory}}
}

void testNewLeak() {
Expand All @@ -59,7 +59,7 @@ void testNewLeak() {
void testNewUseAfterFree() {
int *p = (int *)operator new(0);
delete p;
int j = *p; // expected-warning{{Use of memory after it is freed}}
int j = *p; // expected-warning{{Use of memory after it is released}}
}

void testNewBadFree() {
Expand Down Expand Up @@ -95,7 +95,7 @@ void testShouldReportDoubleFreeNotMismatched() {
int *p = (int*)malloc(sizeof(int)*4);
globalPtr = p;
free(p);
delete globalPtr; // expected-warning {{Attempt to free released memory}}
delete globalPtr; // expected-warning {{Attempt to release already released memory}}
}
int *allocIntArray(unsigned c) {
return new int[c];
Expand Down
22 changes: 11 additions & 11 deletions clang/test/Analysis/NewDelete-checker-test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,52 +155,52 @@ void g(SomeClass &c, ...);
void testUseFirstArgAfterDelete() {
int *p = new int;
delete p;
f(p); // newdelete-warning{{Use of memory after it is freed}}
f(p); // newdelete-warning{{Use of memory after it is released}}
}

void testUseMiddleArgAfterDelete(int *p) {
delete p;
f(0, p); // newdelete-warning{{Use of memory after it is freed}}
f(0, p); // newdelete-warning{{Use of memory after it is released}}
}

void testUseLastArgAfterDelete(int *p) {
delete p;
f(0, 0, p); // newdelete-warning{{Use of memory after it is freed}}
f(0, 0, p); // newdelete-warning{{Use of memory after it is released}}
}

void testUseSeveralArgsAfterDelete(int *p) {
delete p;
f(p, p, p); // newdelete-warning{{Use of memory after it is freed}}
f(p, p, p); // newdelete-warning{{Use of memory after it is released}}
}

void testUseRefArgAfterDelete(SomeClass &c) {
delete &c;
g(c); // newdelete-warning{{Use of memory after it is freed}}
g(c); // newdelete-warning{{Use of memory after it is released}}
}

void testVariadicArgAfterDelete() {
SomeClass c;
int *p = new int;
delete p;
g(c, 0, p); // newdelete-warning{{Use of memory after it is freed}}
g(c, 0, p); // newdelete-warning{{Use of memory after it is released}}
}

void testUseMethodArgAfterDelete(int *p) {
SomeClass *c = new SomeClass;
delete p;
c->f(p); // newdelete-warning{{Use of memory after it is freed}}
c->f(p); // newdelete-warning{{Use of memory after it is released}}
}

void testUseThisAfterDelete() {
SomeClass *c = new SomeClass;
delete c;
c->f(0); // newdelete-warning{{Use of memory after it is freed}}
c->f(0); // newdelete-warning{{Use of memory after it is released}}
}

void testDoubleDelete() {
int *p = new int;
delete p;
delete p; // newdelete-warning{{Attempt to free released memory}}
delete p; // newdelete-warning{{Attempt to release already released memory}}
}

void testExprDeleteArg() {
Expand Down Expand Up @@ -412,7 +412,7 @@ class DerefClass{
void testDoubleDeleteClassInstance() {
DerefClass *foo = new DerefClass();
delete foo;
delete foo; // newdelete-warning {{Attempt to free released memory}}
delete foo; // newdelete-warning {{Attempt to release already released memory}}
}

class EmptyClass{
Expand All @@ -424,7 +424,7 @@ class EmptyClass{
void testDoubleDeleteEmptyClass() {
EmptyClass *foo = new EmptyClass();
delete foo;
delete foo; // newdelete-warning {{Attempt to free released memory}}
delete foo; // newdelete-warning {{Attempt to release already released memory}}
}

struct Base {
Expand Down
4 changes: 2 additions & 2 deletions clang/test/Analysis/NewDelete-intersections.mm
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,11 @@ void testObjcFreeNewed() {
void testFreeAfterDelete() {
int *p = new int;
delete p;
free(p); // newdelete-warning{{Use of memory after it is freed}}
free(p); // newdelete-warning{{Use of memory after it is released}}
}

void testStandardPlacementNewAfterDelete() {
int *p = new int;
delete p;
p = new (p) int; // newdelete-warning{{Use of memory after it is freed}}
p = new (p) int; // newdelete-warning{{Use of memory after it is released}}
}
8 changes: 4 additions & 4 deletions clang/test/Analysis/NewDelete-path-notes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ void test() {
delete p;
// expected-note@-1 {{Memory is released}}

delete p; // expected-warning {{Attempt to free released memory}}
// expected-note@-1 {{Attempt to free released memory}}
delete p; // expected-warning {{Attempt to release already released memory}}
// expected-note@-1 {{Attempt to release already released memory}}
}

struct Odd {
Expand All @@ -29,7 +29,7 @@ struct Odd {
void test(Odd *odd) {
odd->kill(); // expected-note{{Calling 'Odd::kill'}}
// expected-note@-1 {{Returning; memory was released}}
delete odd; // expected-warning {{Attempt to free released memory}}
// expected-note@-1 {{Attempt to free released memory}}
delete odd; // expected-warning {{Attempt to release already released memory}}
// expected-note@-1 {{Attempt to release already released memory}}
}

4 changes: 2 additions & 2 deletions clang/test/Analysis/diagnostics/dtors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ struct smart_ptr {
return (x || 0) ? nullptr : s; // expected-note{{Field 'x' is 0}}
// expected-note@-1{{Left side of '||' is false}}
// expected-note@-2{{'?' condition is false}}
// expected-warning@-3{{Use of memory after it is freed}}
// expected-note@-4{{Use of memory after it is freed}}
// expected-warning@-3{{Use of memory after it is released}}
// expected-note@-4{{Use of memory after it is released}}
}
};

Expand Down
18 changes: 9 additions & 9 deletions clang/test/Analysis/dtor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ void testSmartPointer() {
SmartPointer Deleter(mem);
// destructor called here
}
*mem = 0; // expected-warning{{Use of memory after it is freed}}
*mem = 0; // expected-warning{{Use of memory after it is released}}
}


Expand All @@ -48,7 +48,7 @@ void testSmartPointer2() {
doSomething();
// destructor called here
}
*mem = 0; // expected-warning{{Use of memory after it is freed}}
*mem = 0; // expected-warning{{Use of memory after it is released}}
}


Expand All @@ -65,7 +65,7 @@ void testSubclassSmartPointer() {
doSomething();
// destructor called here
}
*mem = 0; // expected-warning{{Use of memory after it is freed}}
*mem = 0; // expected-warning{{Use of memory after it is released}}
}


Expand All @@ -82,7 +82,7 @@ void testMultipleInheritance1() {
doSomething();
// destructor called here
}
*mem = 0; // expected-warning{{Use of memory after it is freed}}
*mem = 0; // expected-warning{{Use of memory after it is released}}
}

void testMultipleInheritance2() {
Expand All @@ -93,7 +93,7 @@ void testMultipleInheritance2() {
doSomething();
// destructor called here
}
*mem = 0; // expected-warning{{Use of memory after it is freed}}
*mem = 0; // expected-warning{{Use of memory after it is released}}
}

void testMultipleInheritance3() {
Expand All @@ -103,7 +103,7 @@ void testMultipleInheritance3() {
// Remove dead bindings...
doSomething();
// destructor called here
// expected-warning@28 {{Attempt to free released memory}}
// expected-warning@28 {{Attempt to release already released memory}}
}
}

Expand All @@ -122,7 +122,7 @@ void testSmartPointerMember() {
doSomething();
// destructor called here
}
*mem = 0; // expected-warning{{Use of memory after it is freed}}
*mem = 0; // expected-warning{{Use of memory after it is release}}
}


Expand Down Expand Up @@ -524,7 +524,7 @@ struct NonTrivial {
return *this;
}
~NonTrivial() {
delete[] p; // expected-warning {{free released memory}}
delete[] p; // expected-warning {{release already released memory}}
}
};

Expand Down Expand Up @@ -593,5 +593,5 @@ void overrideLeak() {
void overrideDoubleDelete() {
auto *a = new CustomOperators();
delete a;
delete a; // expected-warning@577 {{Attempt to free released memory}}
delete a; // expected-warning@577 {{Attempt to release already released memory}}
}
2 changes: 1 addition & 1 deletion clang/test/Analysis/getline-alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void test_getline_malloc_buffer() {

ssize_t r = getdelim(&buffer, &n, '\r', F1);
// ptr may be dangling
free(ptr); // expected-warning {{Attempt to free released memory}}
free(ptr); // expected-warning {{Attempt to release already released memory}}
free(buffer); // ok
fclose(F1);
}
Expand Down
Loading