| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
highlights the allocation site) to all the relevant reports within the checker.
llvm-svn: 138531
|
|
|
|
| |
llvm-svn: 138497
|
|
|
|
| |
llvm-svn: 138493
|
|
|
|
|
|
| |
pointing to the allocation site when reporting a leak.
llvm-svn: 138479
|
|
|
|
|
|
| |
MIGHT deallocate the memory region allocated with SecKeychain APIs. Specifically, when the buffer is passed to CFStringCreateWithBytesNoCopy along with a custom deallocator, which might potentially correctly release the memory.
llvm-svn: 138417
|
|
|
|
|
|
| |
tracking even when it's no longer a SymbolicRegion, for example, when it is cast to char*.
llvm-svn: 138415
|
|
|
|
|
|
| |
for future reuse.
llvm-svn: 138414
|
|
|
|
|
|
| |
to deallocate the password. Catch this error explicitly and generate the error message at the place where free() is called.
llvm-svn: 138296
|
|
|
|
| |
llvm-svn: 138215
|
|
|
|
| |
llvm-svn: 138214
|
|
|
|
|
|
| |
CFRefCount to NoReturnFunctionChecker. No functionality change intended.
llvm-svn: 138210
|
|
|
|
| |
llvm-svn: 138183
|
|
|
|
|
|
|
|
|
|
|
|
| |
API in favor of addVisitor(BugReporterVisitor*).
1) Create a header file to expose the predefined visitors. And move the parent(BugReporterVisitor) there as well.
2) Remove the registerXXXVisitor functions - the Visitor constructors/getters can be used now to create the object. One exception is registerVarDeclsLastStore(), which registers more then one visitor, so make it static member of FindLastStoreBRVisitor.
3) Modify all the checkers to use the new API.
llvm-svn: 138126
|
|
|
|
|
|
| |
functionality they provided into their parent BugReport. The only functional changes are: made getRanges() non const - it adds default range to Ranges if none are supplied, made getStmt() private, which was another FIXME.
llvm-svn: 137894
|
|
|
|
|
|
| |
support. Removes support for checker groups (we can add them back in later if we decide they are still useful), and -analyzer-checker-help output is a little worse for the time being (no packages).
llvm-svn: 137758
|
|
|
|
| |
llvm-svn: 137740
|
|
|
|
|
|
| |
returned an error.
llvm-svn: 137720
|
|
|
|
|
|
| |
generate regular nodes instead of sink nodes.
llvm-svn: 137681
|
|
|
|
| |
llvm-svn: 137665
|
|
|
|
|
|
| |
per code review for r137523).
llvm-svn: 137633
|
|
|
|
|
|
| |
and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at.
llvm-svn: 137537
|
|
|
|
|
|
|
| |
Having a notion of an actual ProgramPointTag will aid in introspection of the analyzer's behavior.
For example, the GraphViz output of the analyzer will pretty-print the tags in a useful manner.
llvm-svn: 137529
|
|
|
|
|
|
| |
enclosing function parameter, skip it to avoid false positives.
llvm-svn: 137526
|
|
|
|
|
|
|
|
| |
Report errors earlier: on checkDeadSymbols() and clear the state after the symbol we are tracking goes out of scope.
Also, perform lazy error checking. Instead of forcing the paths to be split depending one the return value of the allocator, make the return symbol depend on the allocated data symbol, which prolongs its life span to the time when the allocated data symbol becomes dead.
llvm-svn: 137523
|
|
|
|
|
|
| |
time. One is cleanup, the other is me being OCD about enum group nesting.
llvm-svn: 137517
|
|
|
|
|
|
|
|
| |
the allocated data symbol, we can just use the symbol corresponding to the SymbolicRegion. This simplifies tracking of the symbol, for example, SymbolMetadata needs to go through extra hoops to stay alive.
Make AllocationState internal to the MacOSKeychainAPIChecker class.
llvm-svn: 137514
|
|
|
|
|
|
|
|
| |
separate TypedRegions that implement getValueType() from those that don't.
Patch by Olaf Krzikalla!
llvm-svn: 137498
|
|
|
|
|
|
| |
state so that we could clear the state on evalDeadSymbols; also track the return value.
llvm-svn: 137003
|
|
|
|
|
|
| |
getAsPointeeMemoryRegion so that it could be reused.
llvm-svn: 136952
|
|
|
|
|
|
| |
exploring the transition on which a call to allocator function failed (to be able to find errors in examples like ErrorCodesFromDifferentAPISDoNotInterfere).
llvm-svn: 136930
|
|
|
|
|
|
| |
allocator/deallocator API pairs. Add the allocator function ID to the checker state. Better comments.
llvm-svn: 136889
|
|
|
|
| |
llvm-svn: 136852
|
|
|
|
|
|
| |
SymbolicRef since the address might not be a symbolic value in some cases, for example in fooOnlyFree() test.
llvm-svn: 136851
|
|
|
|
| |
llvm-svn: 136849
|
|
|
|
|
|
| |
be the common root package.
llvm-svn: 136835
|
|
|
|
|
|
| |
checker that may be useful for security auditing. This checker is currently too noisy to be on by default.
llvm-svn: 136804
|
|
|
|
|
|
| |
returned noErr. (+ minor cleanup)
llvm-svn: 136694
|
|
|
|
|
|
| |
experimental for now. Note, the checker still does not handle tracking of escaped values, taking into account the return value of the allocator functions, nor the actual bug reporting..
llvm-svn: 136659
|
|
|
|
| |
llvm-svn: 136581
|
|
|
|
|
|
|
|
|
|
|
|
| |
be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs.
The motivation of this large change is to drastically simplify the logic in ExprEngine going forward.
Some fallout is that the output of some BugReporterVisitors is not as accurate as before; those will
need to be fixed over time. There is also some possible performance regression as RemoveDeadBindings
will be called frequently; this can also be improved over time.
llvm-svn: 136419
|
|
|
|
|
|
| |
properly be removed from the state.
llvm-svn: 136418
|
|
|
|
|
|
| |
SourceManager and FullSourceLoc.
llvm-svn: 135969
|
|
|
|
|
|
|
|
| |
LLVM.h imports
them into the clang namespace.
llvm-svn: 135852
|
|
|
|
| |
llvm-svn: 135518
|
|
|
|
|
|
| |
pthread and XNU locks. Patch by Rui Paulo!
llvm-svn: 135515
|
|
|
|
|
|
| |
API. No functionality change.
llvm-svn: 135349
|
|
|
|
|
|
| |
llvm::OwningPtr<BugType> vars (the new convention). No functionality change.
llvm-svn: 135255
|
|
|
|
|
|
| |
single llvm::OwningPtr<BugType> (the new convention). No functionality change.
llvm-svn: 135250
|
|
|
|
|
|
| |
Fixes rdar://9714064
llvm-svn: 134292
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MaterializeTemporaryExpr captures a reference binding to a temporary
value, making explicit that the temporary value (a prvalue) needs to
be materialized into memory so that its address can be used. The
intended AST invariant here is that a reference will always bind to a
glvalue, and MaterializeTemporaryExpr will be used to convert prvalues
into glvalues for that binding to happen. For example, given
const int& r = 1.0;
The initializer of "r" will be a MaterializeTemporaryExpr whose
subexpression is an implicit conversion from the double literal "1.0"
to an integer value.
IR generation benefits most from this new node, since it was
previously guessing (badly) when to materialize temporaries for the
purposes of reference binding. There are likely more refactoring and
cleanups we could perform there, but the introduction of
MaterializeTemporaryExpr fixes PR9565, a case where IR generation
would effectively bind a const reference directly to a bitfield in a
struct. Addresses <rdar://problem/9552231>.
llvm-svn: 133521
|