Commit Graph

144 Commits

Author SHA1 Message Date
Julian Dolby a1dd19b8d0 Merge branch 'pull-request__android-bugfixes' of https://github.com/joana-team/WALA 2017-03-11 16:56:09 -05:00
Julian Dolby ef1994e146 Merge branch 'master' of https://github.com/wala/WALA 2017-03-11 16:21:16 -05:00
Julian Dolby db65c16863 Merge branch 'pull-request__typeannotations' of https://github.com/joana-team/WALA 2017-03-11 16:19:50 -05:00
Julian Dolby 6a8696e6e1 Merge pull request #118 from joana-team/pull-request__dalvik_typeinference
Make a variant of TypeInference which supports dalvik bytecode
2017-03-11 16:12:50 -05:00
Julian Dolby ffe355bc74 Merge branch 'warning-fixes-model-behavior-class' of https://github.com/liblit/WALA 2017-03-11 13:45:20 -05:00
Julian Dolby f595eb357e add some abstraction to IR, using IRView 2017-03-11 13:22:45 -05:00
Julian Dolby 016c3940e8 Merge branch 'pull-request__misc-bugfixes' of https://github.com/joana-team/WALA 2017-03-09 08:59:40 -05:00
Julian Dolby d24519e974 cross-cutting changes to make more of WALA runnable with TeaVM. The biggest change is refactoring to AnalysisCache and friends; since TeaVM does not support SoftReference, I needed to add a layer of interfaces so that I can use a more simpleminded caching implementation for TeaVM. There are other changes to Module and friends to break connections with File and URL, which also cause TeaVM grief. I also organized imports in many places to remove unused types that caused trouble. 2017-02-02 20:33:27 -05:00
Martin Mohr 467bf8038d implement hashCode() and equals() for DexModuleEntry 2017-01-26 15:41:42 +01:00
Martin Mohr 64823846c0 get rid of HashCodeComparator and all its usages
This addresses both https://github.com/wala/WALA/issues/133 and
https://github.com/wala/WALA/issues/88
2017-01-26 14:16:48 +01:00
Martin Mohr 4228bac5ff If we see a call to an unknown method, conservatively add edges to all catch handlers
This is an attempt to fix issue #123
2016-12-09 16:46:01 +01:00
Martin Mohr ee22e177c5 Dalvik-Frontend: add catch-all handler at the end and not at the beginning 2016-12-09 16:40:14 +01:00
Martin Mohr 6d0ba7d371 Make a variant of TypeInference which supports dalvik bytecode
Dalvik bytecode represents 'null' as 0 which may lead to problems
in phi instructions. This variant of TypeInference fixes these
problems by

- tracking whether an SSA value is constant zero and
- ignoring constant zeros in the transfer function of phi instructions
  when meeting with non-primitive types
2016-12-07 16:34:13 +01:00
Martin Mohr 9ada546c5d Activity.onStop is part of the loop 2016-12-07 16:11:19 +01:00
Martin Mohr 9a3e869dd1 use pi nodes in dalvik frontend 2016-12-07 16:11:19 +01:00
Martin Mohr fd2d4aefbf further fixes in dalvik front-end to avoid NullPointerExceptions and other errors 2016-12-07 16:11:19 +01:00
Martin Mohr 42ae088c05 turn exception throwing into debug logging message 2016-12-07 16:11:19 +01:00
Martin Mohr a8cb767c63 allow action names starting with "."
According to [1], such action names are allowed and implicitly to be
prepended with the package name of the application.

[1] http://developer.android.com/guide/topics/manifest/activity-element.html
2016-12-07 16:11:19 +01:00
Martin Mohr 7c657f5754 allow unqualified custom actions 2016-12-07 16:11:19 +01:00
Martin Mohr be635cf50d support for activity aliases 2016-12-07 16:11:19 +01:00
Martin Mohr 92f26a33c2 clarification 2016-12-07 16:11:19 +01:00
Martin Mohr 95031461f4 handle gracefully the case of intent-filter without action
According to [1], such intent-filters do not let any intent
pass but on the other hand do no harm

[1] http://developer.android.com/guide/topics/manifest/action-element.html
2016-12-07 16:11:19 +01:00
Martin Mohr a1fa8a2057 update intent information instead of crashing 2016-12-07 16:11:18 +01:00
Martin Hecker 8e773fcf88 in order to look up instruction-indices from a bytecode-indices, do a binary search on the existing pcMap array (as suggested by Julian Dolby).
also see https://sourceforge.net/p/wala/mailman/message/35518796/ and answers.
2016-12-05 18:52:37 +01:00
Ben Liblit b3293ecc3e Enforce restrictions on the model behavior class statically
If a client violates these restrictions, I prefer that their code fail
at compile time instead of run time.  Changing a few key types from
`Class` to `Class<? extends AbstractAndroidModel>` gives us precisely
the static enforcement we need and lets us remove an
`AbstractAndroidModel.class.isAssignableFrom` run-time check.

However, this does change the public API of `AndroidEntryPointManager`
in two ways.  The `getModelBehavior` and `setModelBehavior` methods now
respectively accept and return `Class<?  extends AbstractAndroidModel>`
instead of `Class`.  Is tightening up a public API in this manner
considered OK?
2016-11-26 22:39:37 -06:00
Julian Dolby 7d7dd17a47 minor fix to getting method annotations for dalvik 2016-07-28 16:11:16 -04:00
Julian Dolby 76286a330c make Android entrypoint locator work for source code 2016-06-10 21:21:08 -04:00
Julian Dolby 2b2543cfbb fixed bugs with switch bytecodes in Dalvik.
ignore exceptions in callgraph construction when they are ignored in
bytecode from Dalvik.
2015-11-13 19:25:23 -05:00
Julian Dolby d010e36923 fix for NOP instructions 2015-11-13 09:57:02 -05:00
Manu Sridharan ce10710125 Avoid repeatedly initializing possibleEntryPoints
Added while investigating #88, but this does not fix the problem
2015-10-11 16:12:13 -07:00
Julian Dolby 5517371a9b adapt to IField changes 2015-09-16 13:25:53 -04:00
Julian Dolby 3ddaa9eaf7 restore EPL headers 2015-08-13 12:34:34 -04:00
Julian Dolby 045537274f merge 2015-08-13 11:26:48 -04:00
Julian Dolby 671bd98977 Java 8 suport enhancements, mostly to model lambdas compiled to
invokedynamic
2015-08-12 15:20:21 -04:00
Martin Mohr 8d143dbf20 remove 'Custom Change' markers 2015-06-25 09:12:37 +02:00
Martin Mohr 0583450884 fix whitespace 2015-06-22 10:45:26 +02:00
Martin Mohr f4cef8db7a dalvik frontend: set target for SSAGotoInstructions 2015-06-22 10:45:26 +02:00
Martin Mohr cecd2c950f support multiple intent actions and urls in manifest parser 2015-06-14 23:34:33 -07:00
Martin Mohr a56eeae51a kill deprecated method together with the last call of it 2015-06-14 23:33:43 -07:00
Martin Mohr 4bc25d3ddf also model outer loops as indefinite instead of infinite 2015-06-14 23:33:18 -07:00
Martin Mohr 441cc6f279 bugfix in model: close inner loop using a *conditional* goto
This way, the rest of the outer loop (including the jump to the
beginning) is also reached in the control-flow which means that
the outer loop is modelled as a proper loop
2015-06-14 23:31:35 -07:00
Martin Mohr ccb5b02abd do not add self-loops 2015-06-14 23:31:35 -07:00
Martin Mohr cfadf0104c substitute call to deprecated method 2015-06-14 23:31:35 -07:00
Martin Mohr b1c10b642f finish all sections only if a section was entered 2015-06-14 23:31:00 -07:00
Martin Mohr cfa005203a cover corner case of intent or intent's action being null 2015-06-14 23:31:00 -07:00
Martin Mohr 9c4c3507c4 cover corner case of method being null 2015-06-14 23:31:00 -07:00
Martin Mohr 3e4af27112 allow resetting the AndroidEntryPointManager - this is rudimentary support for running the android front-end *multiple times within the same VM* 2015-06-14 23:30:41 -07:00
Martin Mohr b5092637c8 improve recognition of intent action 2015-06-14 23:29:27 -07:00
Martin Mohr 8610ac29c7 allow to retrieve Android Model Class with different cha 2015-06-14 23:29:27 -07:00
Martin Mohr 7e3fb18fc0 BUGFIX: when reusing ssa value numbers, consider the case that an instruction may not have a def 2015-06-14 23:29:10 -07:00