On develop: Type checking
implemented a basic type checker for calls of the form a.foo() where a is tainted. The call graph can only give us all possible targets of the call, but if we know that a is of type A, we only need to consider callees that are compatible with type A.
added a type check on casts and made a type tighter
fixed the type checker
added test cases for type checker
1) various fixes to EasyTaintWrapper.java
2) added an option to explicitly model equals() and hashCode()
3) added some test cases for the EasyTaintWrapper
1) changed Android method lists to sets
2) fixed a bug in alias generation for taint wrappers (if the whole base object was tainted, no aliases for it were retrieved)
3) added some taint wrapper test cases
fixed a NullPointerExeption
1) made sub-field tainting explicit
2) fixed various issues
3) added more test cases
1) added yet another test case
2) added a toString() method
Bugfix for typecasts: We can cast java.lang.Object to an array type. The type stored with the access path must then be updated accordingly. If we are in the backwards solver, we do not know which type the variable had before the cast, so we pass on null.
Bugfix: Return statements can implicitly cast values: a = foo(); - foo returns Object[], but a is of type Object
1) refactored infoflow problems to contain SourceManager and logger in abstract problem
2) no longer propagating into sources and sinks in the backwards solver
made the check for tainting base locals using the taint wrapper more precise to avoid unnecessary computations
1) some performance improvements
2) improved TaintWrapper.isExclusive
3) added new data for the taint wrapper
fixed very stupid access path bug
1) added a missing code file
2) removed a lot of debugging outputs
3) added a new aliasing test case
ok except for string updates
works again
implemented a non-tainting fix for assignments which are not references, but value copies