File tree Expand file tree Collapse file tree 3 files changed +15
-0
lines changed
lib/StaticAnalyzer/Checkers/WebKit
test/Analysis/Checkers/WebKit Expand file tree Collapse file tree 3 files changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -235,6 +235,11 @@ bool isExprToGetCheckedPtrCapableMember(const clang::Expr *E) {
235235 auto *ME = dyn_cast<MemberExpr>(E);
236236 if (!ME)
237237 return false ;
238+ auto *Base = ME->getBase ();
239+ if (!Base)
240+ return false ;
241+ if (!isa<CXXThisExpr>(Base->IgnoreParenCasts ()))
242+ return false ;
238243 auto *D = ME->getMemberDecl ();
239244 if (!D)
240245 return false ;
Original file line number Diff line number Diff line change @@ -44,6 +44,10 @@ struct WrapperObj {
4444 consume (checkedRef);
4545 // expected-warning@-1{{Call argument is unchecked and unsafe [alpha.webkit.UncheckedCallArgsChecker]}}
4646 }
47+ void bar (WrapperObj& other) {
48+ consume (other.checked );
49+ // expected-warning@-1{{Call argument is unchecked and unsafe [alpha.webkit.UncheckedCallArgsChecker]}}
50+ }
4751};
4852
4953} // namespace call_args_checked
Original file line number Diff line number Diff line change @@ -302,6 +302,12 @@ namespace member_var {
302302 // expected-warning@-1{{Local variable 'b' is unchecked and unsafe [alpha.webkit.UncheckedLocalVarsChecker]}}
303303 b->method ();
304304 }
305+
306+ void bar (WrapperObj& wrapper) {
307+ CheckedObj* ptr = &wrapper.checked ;
308+ // expected-warning@-1{{Local variable 'ptr' is unchecked and unsafe [alpha.webkit.UncheckedLocalVarsChecker]}}
309+ ptr->method ();
310+ }
305311 };
306312
307313}
You can’t perform that action at this time.
0 commit comments