Commit graph

30 commits

Author SHA1 Message Date
David Major
35dd2fb2b2 Bug 1646168 - Allow optional arrows in TestCanRunScript.cpp errors r=andi
These started appearing in clang 11.

Differential Revision: https://phabricator.services.mozilla.com/D82799
2020-07-09 04:59:58 +00:00
Simon Giesecke
47a27132fa Bug 1614371 - Move mozilla-performance-temp-refptr check to alpha checker repo. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D65340

--HG--
rename : build/clang-plugin/TempRefPtrChecker.cpp => build/clang-plugin/alpha/TempRefPtrChecker.cpp
rename : build/clang-plugin/TempRefPtrChecker.h => build/clang-plugin/alpha/TempRefPtrChecker.h
rename : build/clang-plugin/tests/TestTempRefPtr.cpp => build/clang-plugin/alpha/tests/TestTempRefPtr.cpp
extra : moz-landing-system : lando
2020-03-19 14:19:15 +00:00
Boris Zbarsky
c6c4a83796 Bug 1535530. Fix can-run-script analysis to not mishandle on-stack refs to RefPtrs. r=andi,masayuki
The key here is to test the type of the variable declaration for being a
smartptr type, instead of testing the type of the variable _use_.

Differential Revision: https://phabricator.services.mozilla.com/D65581

--HG--
extra : moz-landing-system : lando
2020-03-06 09:57:45 +00:00
Simon Giesecke
b7487e7d51 Bug 1609638 - Add analysis identifying dereferences of temporary RefPtr objects. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D60167

--HG--
extra : moz-landing-system : lando
2020-01-20 14:11:21 +00:00
Boris Zbarsky
b49b18f7fb Bug 1539013. Teach MOZ_CAN_RUN_SCRIPT about taking pointers to live references. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D24840

--HG--
extra : moz-landing-system : lando
2019-03-26 20:55:41 +00:00
Boris Zbarsky
89dea017ae Bug 1539016 part 2. Teach MOZ_CAN_RUN_SCRIPT analysis about conditional operators. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D24839

--HG--
extra : moz-landing-system : lando
2019-03-26 20:56:36 +00:00
Boris Zbarsky
7d25b166ca Bug 1538030. Disable warning about dereferencing void* in can-run-script test. r=glandium
Some of our builds use --enable-warnings-as-errors and some don't, and I can't
figure out a way to write an expectation comment for that.

Differential Revision: https://phabricator.services.mozilla.com/D24469

--HG--
extra : moz-landing-system : lando
2019-03-22 03:25:51 +00:00
Boris Zbarsky
ba49f4de45 Bug 1537537. Improve the MOZ_CAN_RUN_SCRIPT analysis reporting around invalid args. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D24258

--HG--
extra : moz-landing-system : lando
2019-03-21 11:52:50 +00:00
Boris Zbarsky
1e54f805f8 Bug 1536736. Allow constexpr things in the MOZ_CAN_RUN_SCRIPT analysis. r=andi
Since these are compile-time constants, they can't exactly go away on us due to
running script, right?

Differential Revision: https://phabricator.services.mozilla.com/D24195

--HG--
extra : moz-landing-system : lando
2019-03-21 11:52:33 +00:00
Boris Zbarsky
534495abc4 Bug 1536825. Fix the interaction of ignoreTrivials and typechecks in MOZ_CAN_RUN_SCRIPT analysis. r=andi
We need to typecheck the trivials too, not just the final thing after trivials
are stripped, because casts are trivials.

Differential Revision: https://phabricator.services.mozilla.com/D24186

--HG--
extra : moz-landing-system : lando
2019-03-21 11:50:55 +00:00
Boris Zbarsky
b25b0dd1a9 Bug 1536724. Consider a smartptr temporary to be live for MOZ_CAN_RUN_SCRIPT analysis purposes. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D24120

--HG--
extra : moz-landing-system : lando
2019-03-21 11:49:11 +00:00
Boris Zbarsky
081fa29a04 Bug 1536719. Fix handling of member method calls in the MOZ_CAN_RUN_SCRIPT analysis. r=andi
The old code for member method calls did the following:

 1) Find the member method calls.
 2) Look at their "this" expression.
 3) If the "this" is an operator call, check for any of the arguments of the
    operator call being invalid.
 4) Otherwise (if not an operator call) check for the "this" value being
    invalid.

This wasn't right, because the "is invalid" check checks the type and only
considers refcounted things.  So if the code looked something like
"foo[i]->call_method()", we would look at the types of "foo" and "i" and
determine that none of those are refcounted types so there is nothing invalid
here (since "foo" is some sort of array type and "i" is an integer).  The new
setup just checks whether the "this" value is invalid, which does the type
check on the "this" value itself; in the "foo[i]->call_method()" case on
"foo[i]".  We then adjust the exclusions in InvalidArg to consider operator->
on known-live things valid, to allow the thing that we were really trying to
accomplish with the "check for an operator call" bits:
"stackRefPtr->some_method()".

The test coverage being added for the made-up TArray type is meant to catch
things like the geolocation issue that was being hidden by the buggy behavior.
I'm not using nsTArray itself because some header included by nsTArray.h
tries to define operator new/delete bits inline and that triggers warnings that
then cause a clang-plugin test failure, because they're unexpected.

Differential Revision: https://phabricator.services.mozilla.com/D24117

--HG--
extra : moz-landing-system : lando
2019-03-21 11:48:33 +00:00
Boris Zbarsky
640cb8470a Bug 1536336. Change MOZ_CAN_RUN_SCRIPT analysis to allow const members of "this" in addition to stack refptrs. r=andi
"this" is guaranteed to stay alive as long as other MOZ_CAN_RUN_SCRIPT
conditions hold, and its const members can't change value and drop
their refs.

Differential Revision: https://phabricator.services.mozilla.com/D23997

--HG--
extra : moz-landing-system : lando
2019-03-21 11:47:22 +00:00
Brindusan Cristian
044c3936c7 Backed out 6 changesets (bug 1536736, bug 1536336, bug 1536719, bug 1536825, bug 1537537, bug 1536724) for build bustages at TestCanRunScript. CLOSED TREE
Backed out changeset f754116e738e (bug 1537537)
Backed out changeset f9df48cfea43 (bug 1536736)
Backed out changeset 7a9888e700cf (bug 1536825)
Backed out changeset e2551303c5cf (bug 1536724)
Backed out changeset f497ce3b7419 (bug 1536719)
Backed out changeset fd59264c47c1 (bug 1536336)
2019-03-21 07:33:33 +02:00
Boris Zbarsky
e3785e6699 Bug 1537537. Improve the MOZ_CAN_RUN_SCRIPT analysis reporting around invalid args. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D24258

--HG--
extra : moz-landing-system : lando
2019-03-20 20:04:13 +00:00
Boris Zbarsky
22b27ec802 Bug 1536736. Allow constexpr things in the MOZ_CAN_RUN_SCRIPT analysis. r=andi
Since these are compile-time constants, they can't exactly go away on us due to
running script, right?

Differential Revision: https://phabricator.services.mozilla.com/D24195

--HG--
extra : moz-landing-system : lando
2019-03-20 20:04:11 +00:00
Boris Zbarsky
9679412967 Bug 1536825. Fix the interaction of ignoreTrivials and typechecks in MOZ_CAN_RUN_SCRIPT analysis. r=andi
We need to typecheck the trivials too, not just the final thing after trivials
are stripped, because casts are trivials.

Differential Revision: https://phabricator.services.mozilla.com/D24186

--HG--
extra : moz-landing-system : lando
2019-03-20 15:25:55 +00:00
Boris Zbarsky
0d0978f826 Bug 1536724. Consider a smartptr temporary to be live for MOZ_CAN_RUN_SCRIPT analysis purposes. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D24120

--HG--
extra : moz-landing-system : lando
2019-03-20 14:40:34 +00:00
Boris Zbarsky
14f6385d4b Bug 1536719. Fix handling of member method calls in the MOZ_CAN_RUN_SCRIPT analysis. r=andi
The old code for member method calls did the following:

 1) Find the member method calls.
 2) Look at their "this" expression.
 3) If the "this" is an operator call, check for any of the arguments of the
    operator call being invalid.
 4) Otherwise (if not an operator call) check for the "this" value being
    invalid.

This wasn't right, because the "is invalid" check checks the type and only
considers refcounted things.  So if the code looked something like
"foo[i]->call_method()", we would look at the types of "foo" and "i" and
determine that none of those are refcounted types so there is nothing invalid
here (since "foo" is some sort of array type and "i" is an integer).  The new
setup just checks whether the "this" value is invalid, which does the type
check on the "this" value itself; in the "foo[i]->call_method()" case on
"foo[i]".  We then adjust the exclusions in InvalidArg to consider operator->
on known-live things valid, to allow the thing that we were really trying to
accomplish with the "check for an operator call" bits:
"stackRefPtr->some_method()".

The test coverage being added for the made-up TArray type is meant to catch
things like the geolocation issue that was being hidden by the buggy behavior.
I'm not using nsTArray itself because some header included by nsTArray.h
tries to define operator new/delete bits inline and that triggers warnings that
then cause a clang-plugin test failure, because they're unexpected.

Differential Revision: https://phabricator.services.mozilla.com/D24117

--HG--
extra : moz-landing-system : lando
2019-03-20 18:08:16 +00:00
Boris Zbarsky
fd9223d7ac Bug 1536336. Change MOZ_CAN_RUN_SCRIPT analysis to allow const members of "this" in addition to stack refptrs. r=andi
"this" is guaranteed to stay alive as long as other MOZ_CAN_RUN_SCRIPT
conditions hold, and its const members can't change value and drop
their refs.

Differential Revision: https://phabricator.services.mozilla.com/D23997

--HG--
extra : moz-landing-system : lando
2019-03-20 04:19:24 +00:00
Boris Zbarsky
5c13f9c06d Bug 1535124 part 1. Add a MOZ_KnownLive() around callback-typed arguments in bindings. r=qdot
This allows calling a C++ MOZ_CAN_RUN_SCRIPT method that takes a callback argument.

The changes to TestCanRunScript.cpp are there to catch an incorrect change I was
going to make to the analysis to make this work, until I figured out that
RootedCallback should be MOZ_IS_SMARTPTR_TO_REFCOUNTED.

Differential Revision: https://phabricator.services.mozilla.com/D23519

--HG--
extra : moz-landing-system : lando
2019-03-19 12:59:53 +00:00
Boris Zbarsky
f3173cde3f Bug 1534421. Fix the CAN_RUN_SCRIPT analysis to treat a deref of an arg as live if it would treat the arg as live. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D23071

--HG--
extra : moz-landing-system : lando
2019-03-13 12:13:08 +00:00
Boris Zbarsky
b969a0f9f0 Bug 1534518. Change CanRunScriptChecker caller function note to point to the declaration, not the definition. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D23082

--HG--
extra : moz-landing-system : lando
2019-03-13 12:11:34 +00:00
Boris Zbarsky
4b76c0a954 Bug 1506439 part 1. Fix CanRunScript analysis handling of arguments that default to null. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D23064

--HG--
extra : moz-landing-system : lando
2019-03-13 02:33:57 +00:00
Boris Zbarsky
5bf2e408e6 Bug 1534608. MOZ_CAN_RUN_SCRIPT should disallow non-stack refptr arguments. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D23217

--HG--
extra : moz-landing-system : lando
2019-03-13 00:30:11 +00:00
Boris Zbarsky
cb94672630 Bug 1533617 part 5. Disallow virtual MOZ_CAN_RUN_SCRIPT methods overriding a non-MOZ_CAN_RUN_SCRIPT superclass method. r=andi
This way if a caller calls a method that has a MOZ_CAN_RUN_SCRIPT override, it
can detect that it's possibly calling a MOZ_CAN_RUN_SCRIPT thing without having
to know about the override.

Differential Revision: https://phabricator.services.mozilla.com/D22839

--HG--
extra : moz-landing-system : lando
2019-03-11 14:20:27 +00:00
Emilio Cobos Álvarez
2125f0fbd4 Bug 1444416: Handle references in the "can run script" checker. r=mystor
MozReview-Commit-ID: 8F9HjiFqbGN

--HG--
extra : rebase_source : 03d49b9a605ff5eade81a814b0903f81d87720ab
2018-03-09 17:51:59 +01:00
Emilio Cobos Álvarez
b012f3eebd Bug 1434001: Handle lambdas in CanRunScriptChecker. r=mystor
Such a shame that the functionDecl() matcher doesn't handle them. I didn't find
a cleaner way to handle them, but I'm a 100% noob with AST matchers, so there
may be a more elegant way to do this.

MozReview-Commit-ID: 3HJQdFpN4hy

--HG--
extra : rebase_source : 27e48e6fb264499fd99e75eb54a22276758ab3e4
2018-01-29 22:08:15 +01:00
Nika Layzell
a124bfae77 Bug 1418465 - Add an opt-out to the MOZ_CAN_RUN_SCRIPT analysis, r=andi
MozReview-Commit-ID: 2YKncUdrT5p
2017-11-24 11:15:17 -05:00
Tristan Bourvon
ba0998ae31 Bug 1380423 - Add static-analysis to enforce strict rules on functions which can run scripts. r=mystor
MozReview-Commit-ID: GGSyq0z5msB
2017-08-08 19:48:53 +03:00