From: Anna Zaks Date: Tue, 27 Sep 2011 22:25:01 +0000 (+0000) Subject: Fix a crash in MallocOverflowSecurityChecker. Patch by Lei Zhang. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7e5f112ca7410af93c7cdc07cf3a9dae15214300;p=clang Fix a crash in MallocOverflowSecurityChecker. Patch by Lei Zhang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140648 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp b/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp index 983252c771..0f6b621bf7 100644 --- a/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp @@ -244,6 +244,8 @@ void MallocOverflowSecurityChecker::checkASTCodeBody(const Decl *D, // Get the name of the callee. If it's a builtin, strip off the prefix. IdentifierInfo *FnInfo = FD->getIdentifier(); + if (!FnInfo) + return; if (FnInfo->isStr ("malloc") || FnInfo->isStr ("_MALLOC")) { if (TheCall->getNumArgs() == 1) diff --git a/test/Analysis/malloc-overflow.cpp b/test/Analysis/malloc-overflow.cpp new file mode 100644 index 0000000000..c1ac6be4b0 --- /dev/null +++ b/test/Analysis/malloc-overflow.cpp @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=experimental.security.MallocOverflow -verify %s + +class A { +public: + A& operator<<(const A &a); +}; + +void f() { + A a = A(), b = A(); + a << b; +}