r179410 - [analyzer] Makes NewDeleteLeaks checker work independently from NewDelete.

Anton Yartsev anton.yartsev at gmail.com
Fri Apr 12 15:36:29 PDT 2013


On 13.04.2013 1:52, Jordan Rose wrote:
> Sorry, I did this deliberately—I wanted NewDeleteLeaks to be a "sub-checker" of sorts, where you couldn't track leaks without also tracking use-after-free issues. Of course, if I really wanted to do that, I should have also made NewDeleteLeaks automatically enable NewDelete, in the same way that they all enable the basic CStringChecker. (Really, only the malloc checkers should do that.)
>
> I guess I should have discussed this with you before slipping it in like this, but do you have an opinion on which way you'd prefer and why? (Can't tell if this is an opinion or just automatically fixing what looked like a mistake.)
Just automatically fixing. I addressed false-positive leaks and only 
enabled NewDeleteLeaks. Was surprised that it does not catch anything. 
Thought it is a bug.
Should I rollback the commit and add explanatory comment or leave as is 
for now?


>
> Jordan
>
>
> On Apr 12, 2013, at 13:48 , Anton Yartsev <anton.yartsev at gmail.com> wrote:
>
>> Author: ayartsev
>> Date: Fri Apr 12 15:48:49 2013
>> New Revision: 179410
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=179410&view=rev
>> Log:
>> [analyzer] Makes NewDeleteLeaks checker work independently from NewDelete.
>>
>> Added:
>>     cfe/trunk/test/Analysis/NewDeleteLeaks-checker-test.cpp
>> Modified:
>>     cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
>>
>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp?rev=179410&r1=179409&r2=179410&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp Fri Apr 12 15:48:49 2013
>> @@ -1091,7 +1091,7 @@ bool MallocChecker::isTrackedByCurrentCh
>>    }
>>    case AF_CXXNew:
>>    case AF_CXXNewArray: {
>> -    if (!Filter.CNewDeleteChecker)
>> +    if (!Filter.CNewDeleteChecker && !Filter.CNewDeleteLeaksChecker)
>>        return false;
>>      return true;
>>    }
>>
>> Added: cfe/trunk/test/Analysis/NewDeleteLeaks-checker-test.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NewDeleteLeaks-checker-test.cpp?rev=179410&view=auto
>> ==============================================================================
>> --- cfe/trunk/test/Analysis/NewDeleteLeaks-checker-test.cpp (added)
>> +++ cfe/trunk/test/Analysis/NewDeleteLeaks-checker-test.cpp Fri Apr 12 15:48:49 2013
>> @@ -0,0 +1,28 @@
>> +// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.cplusplus.NewDeleteLeaks -std=c++11 -fblocks -verify %s
>> +#include "Inputs/system-header-simulator-cxx.h"
>> +
>> +//----- Standard non-placement operators
>> +void testGlobalOpNew() {
>> +  void *p = operator new(0);
>> +} // expected-warning{{Potential leak of memory pointed to by 'p'}}
>> +
>> +void testGlobalOpNewArray() {
>> +  void *p = operator new[](0);
>> +} // expected-warning{{Potential leak of memory pointed to by 'p'}}
>> +
>> +void testGlobalNewExpr() {
>> +  int *p = new int;
>> +} // expected-warning{{Potential leak of memory pointed to by 'p'}}
>> +
>> +void testGlobalNewExprArray() {
>> +  int *p = new int[0];
>> +} // expected-warning{{Potential leak of memory pointed to by 'p'}}
>> +
>> +//----- Standard nothrow placement operators
>> +void testGlobalNoThrowPlacementOpNewBeforeOverload() {
>> +  void *p = operator new(0, std::nothrow);
>> +} // expected-warning{{Potential leak of memory pointed to by 'p'}}
>> +
>> +void testGlobalNoThrowPlacementExprNewBeforeOverload() {
>> +  int *p = new(std::nothrow) int;
>> +} // expected-warning{{Potential leak of memory pointed to by 'p'}}
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


-- 
Anton




More information about the cfe-commits mailing list