├── .gitignore
├── .gitmodules
├── .project
├── .settings
└── org.eclipse.m2e.core.prefs
├── LICENSE
├── README.MD
├── pom.xml
├── soot-infoflow-android
├── .classpath
├── .gitattributes
├── .gitignore
├── .project
├── .settings
│ ├── org.eclipse.core.resources.prefs
│ ├── org.eclipse.jdt.core.prefs
│ ├── org.eclipse.jdt.ui.prefs
│ └── org.eclipse.m2e.core.prefs
├── AndroidCallbacks.txt
├── SourcesAndSinks.txt
├── SourcesAndSinks_SharedPrefsOnly.txt
├── iccta_testdata_ic3_results
│ ├── Apps_AND_IC3Results_MAPPING.txt
│ ├── de.ecspride_1.txt
│ ├── edu.mit.icc_action_string_operations_1.txt
│ ├── edu.mit.icc_broadcast_programmatic_intentfilter_1.txt
│ ├── edu.mit.icc_component_not_in_manifest_1.txt
│ ├── edu.mit.icc_componentname_class_constant_1.txt
│ ├── edu.mit.icc_concat_action_string_1.txt
│ ├── edu.mit.icc_event_ordering_1.txt
│ ├── edu.mit.icc_intent_component_name_1.txt
│ ├── edu.mit.icc_intent_passed_through_api_1.txt
│ ├── edu.mit.icc_non_constant_class_object_1.txt
│ ├── edu.mit.icc_pass_action_string_through_api_1.txt
│ ├── edu.mit.icc_service_messages_1.txt
│ ├── edu.mit.icc_unresolvable_intent_1.txt
│ ├── edu.mit.shared_preferences_1.txt
│ ├── edu.mit.to_components_share_memory_1.txt
│ └── lu.uni.snt.serval_1.txt
├── insecureBank
│ └── InsecureBank.apk
├── lib
│ ├── junit.jar
│ ├── org.hamcrest.core_1.3.0.jar
│ └── protobuf-java-2.5.0.jar
├── pom.xml
├── schema
│ ├── FlowDroidConfiguration.xsd
│ └── SourcesAndSinks.xsd
├── src
│ └── soot
│ │ └── jimple
│ │ └── infoflow
│ │ ├── android
│ │ ├── InfoflowAndroidConfiguration.java
│ │ ├── SetupApplication.java
│ │ ├── axml
│ │ │ ├── AXmlAttribute.java
│ │ │ ├── AXmlColorValue.java
│ │ │ ├── AXmlComplexValue.java
│ │ │ ├── AXmlDocument.java
│ │ │ ├── AXmlElement.java
│ │ │ ├── AXmlHandler.java
│ │ │ ├── AXmlNamespace.java
│ │ │ ├── AXmlNode.java
│ │ │ ├── AXmlTypes.java
│ │ │ ├── ApkHandler.java
│ │ │ ├── flags
│ │ │ │ ├── BitwiseFlagSystem.java
│ │ │ │ └── InputType.java
│ │ │ └── parsers
│ │ │ │ ├── AXML20Parser.java
│ │ │ │ ├── AXmlConstants.java
│ │ │ │ ├── AbstractBinaryXMLFileParser.java
│ │ │ │ └── IBinaryXMLFileParser.java
│ │ ├── callbacks
│ │ │ ├── AbstractCallbackAnalyzer.java
│ │ │ ├── AndroidCallbackDefinition.java
│ │ │ ├── ComponentReachableMethods.java
│ │ │ ├── DefaultCallbackAnalyzer.java
│ │ │ ├── FastCallbackAnalyzer.java
│ │ │ ├── filters
│ │ │ │ ├── AbstractCallbackFilter.java
│ │ │ │ ├── AlienFragmentFilter.java
│ │ │ │ ├── AlienHostComponentFilter.java
│ │ │ │ ├── ApplicationCallbackFilter.java
│ │ │ │ ├── ICallbackFilter.java
│ │ │ │ └── UnreachableConstructorFilter.java
│ │ │ └── xml
│ │ │ │ ├── CollectedCallbacks.java
│ │ │ │ └── CollectedCallbacksSerializer.java
│ │ ├── config
│ │ │ ├── SootConfigForAndroid.java
│ │ │ ├── XMLConfigurationParser.java
│ │ │ ├── XMLConfigurationWriter.java
│ │ │ └── XMLConstants.java
│ │ ├── data
│ │ │ ├── AndroidMemoryManager.java
│ │ │ ├── AndroidMethod.java
│ │ │ ├── CategoryDefinition.java
│ │ │ └── parsers
│ │ │ │ ├── CSVPermissionMethodParser.java
│ │ │ │ ├── CategorizedAndroidSourceSinkParser.java
│ │ │ │ ├── IPermissionMethodParser.java
│ │ │ │ ├── PScoutPermissionMethodParser.java
│ │ │ │ └── PermissionMethodParser.java
│ │ ├── entryPointCreators
│ │ │ ├── AbstractAndroidEntryPointCreator.java
│ │ │ ├── AndroidEntryPointConstants.java
│ │ │ ├── AndroidEntryPointCreator.java
│ │ │ ├── AndroidEntryPointUtils.java
│ │ │ ├── DummyMainFieldElementTag.java
│ │ │ └── components
│ │ │ │ ├── AbstractComponentEntryPointCreator.java
│ │ │ │ ├── ActivityEntryPointCreator.java
│ │ │ │ ├── ActivityEntryPointInfo.java
│ │ │ │ ├── BroadcastReceiverEntryPointCreator.java
│ │ │ │ ├── ComponentEntryPointCollection.java
│ │ │ │ ├── ComponentEntryPointInfo.java
│ │ │ │ ├── ContentProviderEntryPointCreator.java
│ │ │ │ ├── FragmentEntryPointCreator.java
│ │ │ │ ├── ServiceConnectionEntryPointCreator.java
│ │ │ │ ├── ServiceEntryPointCreator.java
│ │ │ │ └── ServiceEntryPointInfo.java
│ │ ├── iccta
│ │ │ ├── App.java
│ │ │ ├── Ic3Data.java
│ │ │ ├── Ic3Provider.java
│ │ │ ├── Ic3ResultLoader.java
│ │ │ ├── IccInstrumentDestination.java
│ │ │ ├── IccInstrumenter.java
│ │ │ ├── IccLink.java
│ │ │ ├── IccLinkProvider.java
│ │ │ ├── IccRedirectionCreator.java
│ │ │ └── MessageHandler.java
│ │ ├── manifest
│ │ │ ├── BaseProcessManifest.java
│ │ │ ├── ComponentType.java
│ │ │ ├── IActivity.java
│ │ │ ├── IAndroidApplication.java
│ │ │ ├── IAndroidComponent.java
│ │ │ ├── IBroadcastReceiver.java
│ │ │ ├── IComponentContainer.java
│ │ │ ├── IContentProvider.java
│ │ │ ├── IManifestHandler.java
│ │ │ ├── IService.java
│ │ │ ├── ProcessManifest.java
│ │ │ ├── binary
│ │ │ │ ├── AbstractBinaryAndroidComponent.java
│ │ │ │ ├── BinaryAndroidApplication.java
│ │ │ │ ├── BinaryManifestActivity.java
│ │ │ │ ├── BinaryManifestBroadcastReceiver.java
│ │ │ │ ├── BinaryManifestContentProvider.java
│ │ │ │ └── BinaryManifestService.java
│ │ │ └── containers
│ │ │ │ ├── EagerComponentContainer.java
│ │ │ │ └── EmptyComponentContainer.java
│ │ ├── resources
│ │ │ ├── ARSCFileParser.java
│ │ │ ├── AbstractResourceParser.java
│ │ │ ├── IResourceHandler.java
│ │ │ ├── LayoutFileParser.java
│ │ │ └── controls
│ │ │ │ ├── AndroidLayoutControl.java
│ │ │ │ ├── EditTextControl.java
│ │ │ │ ├── GenericLayoutControl.java
│ │ │ │ └── LayoutControlFactory.java
│ │ ├── results
│ │ │ └── xml
│ │ │ │ ├── InfoflowResultsSerializer.java
│ │ │ │ └── XmlConstants.java
│ │ └── source
│ │ │ ├── AccessPathBasedSourceSinkManager.java
│ │ │ ├── AndroidSourceSinkManager.java
│ │ │ ├── ConfigurationBasedCategoryFilter.java
│ │ │ ├── UnsupportedSourceSinkFormatException.java
│ │ │ └── parsers
│ │ │ └── xml
│ │ │ ├── AbstractXMLSourceSinkParser.java
│ │ │ ├── ResourceUtils.java
│ │ │ ├── XMLConstants.java
│ │ │ └── XMLSourceSinkParser.java
│ │ └── collections
│ │ └── codeOptimization
│ │ └── StringResourcesResolver.java
├── test
│ └── soot
│ │ └── jimple
│ │ └── infoflow
│ │ └── android
│ │ └── test
│ │ ├── BaseJUnitTests.java
│ │ ├── droidBench
│ │ ├── AliasingTest.java
│ │ ├── AndroidSpecificTest.java
│ │ ├── ArrayAndListTest.java
│ │ ├── CallbackTest.java
│ │ ├── EmulatorDetectionTest.java
│ │ ├── FieldAndObjectSensitivityTest.java
│ │ ├── GeneralJavaTest.java
│ │ ├── ImplicitFlowTest.java
│ │ ├── InterAppCommunicationTest.java
│ │ ├── InterComponentCommunicationTest.java
│ │ ├── JUnitTests.java
│ │ ├── LifecycleTest.java
│ │ ├── ReflectionICCTest.java
│ │ ├── ReflectionTest.java
│ │ ├── ThreadingTest.java
│ │ ├── backward
│ │ │ ├── AliasingTest.java
│ │ │ ├── AndroidSpecificTest.java
│ │ │ ├── ArrayAndListTest.java
│ │ │ ├── CallbackTest.java
│ │ │ ├── EmulatorDetectionTest.java
│ │ │ ├── FieldAndObjectSensitivityTest.java
│ │ │ ├── GeneralJavaTest.java
│ │ │ ├── ImplicitFlowTest.java
│ │ │ ├── InterAppCommunicationTest.java
│ │ │ ├── InterComponentCommunicationTest.java
│ │ │ ├── LifecycleTest.java
│ │ │ ├── ReflectionICCTest.java
│ │ │ ├── ReflectionTest.java
│ │ │ └── ThreadingTest.java
│ │ └── forward
│ │ │ ├── AliasingTest.java
│ │ │ ├── AndroidSpecificTest.java
│ │ │ ├── ArrayAndListTest.java
│ │ │ ├── CallbackTest.java
│ │ │ ├── EmulatorDetectionTest.java
│ │ │ ├── FieldAndObjectSensitivityTest.java
│ │ │ ├── GeneralJavaTest.java
│ │ │ ├── ImplicitFlowTest.java
│ │ │ ├── InterAppCommunicationTest.java
│ │ │ ├── InterComponentCommunicationTest.java
│ │ │ ├── LifecycleTest.java
│ │ │ ├── ReflectionICCTest.java
│ │ │ ├── ReflectionTest.java
│ │ │ └── ThreadingTest.java
│ │ ├── insecureBank
│ │ └── InsecureBankTests.java
│ │ ├── manifest
│ │ └── ProcessManifestTest.java
│ │ ├── otherAPKs
│ │ ├── AlwaysShortenTests.java
│ │ ├── JUnitTests.java
│ │ └── OtherAPKTests.java
│ │ ├── sourceToSinks
│ │ ├── JUnitTests.java
│ │ └── SourceToSinksTest.java
│ │ └── xmlParser
│ │ ├── SigToAndroidMethodTest.java
│ │ └── XmlParserTest.java
├── testAPKs
│ ├── 9458cfb51c90130938abcef7173c3f6d44a02720.apk
│ ├── FlowDroidAliasActivity.apk
│ ├── ReturnParameterTest.apk
│ └── SourceSinkDefinitions
│ │ ├── SourceToSink1.apk
│ │ ├── SourceToSink2.apk
│ │ ├── SourceToSink3.apk
│ │ ├── SourceToSink4.apk
│ │ ├── SourceToSink5.apk
│ │ ├── SourceToSink6.apk
│ │ ├── sourcesAndSinks.xml
│ │ └── sourcesAndSinksOldFormat.xml
└── testXmlParser
│ ├── additionalFlows.xml
│ ├── complete.txt
│ ├── complete.xml
│ ├── completeOld.txt
│ ├── empty.txt
│ ├── empty.xml
│ ├── invalidReturnCallType.xml
│ ├── missingParts.xml
│ ├── missingPartsOld.txt
│ ├── notValid.xml
│ └── returnCallType.xml
├── soot-infoflow-cmd
├── .classpath
├── .gitignore
├── .project
├── .settings
│ ├── org.eclipse.core.resources.prefs
│ ├── org.eclipse.jdt.core.prefs
│ ├── org.eclipse.jdt.ui.prefs
│ └── org.eclipse.m2e.core.prefs
├── build
│ └── .gitignore
├── pom.xml
├── schema
│ ├── FlowDroidConfiguration.xsd
│ └── SourcesAndSinks.xsd
├── sootOutput
│ ├── android.app.Activity.jimple
│ ├── android.content.ServiceConnection.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.BuildConfig.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.MainActivity.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$attr.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$color.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$drawable.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$id.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$layout.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$mipmap.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$string.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$style.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R$styleable.jimple
│ ├── de.fraunhofer.sit.deserializationvuln.R.jimple
│ └── dummyMainClass.jimple
└── src
│ └── soot
│ └── jimple
│ └── infoflow
│ └── cmd
│ ├── AbortAnalysisException.java
│ └── MainClass.java
├── soot-infoflow-integration
├── .classpath
├── .gitignore
├── .project
├── .settings
│ ├── org.eclipse.core.resources.prefs
│ ├── org.eclipse.jdt.core.prefs
│ ├── org.eclipse.jdt.ui.prefs
│ └── org.eclipse.m2e.core.prefs
├── SourcesAndSinks_GeoLocationNetworkOnly.txt
├── pom.xml
├── res
│ ├── AndroidRiverSourcesAndSinks.xml
│ ├── MultipleSinkDefs.xml
│ ├── OutputStreamAndWriters.xml
│ └── RiverSourcesAndSinks.xml
├── test
│ └── soot
│ │ └── jimple
│ │ └── infoflow
│ │ ├── collections
│ │ └── test
│ │ │ ├── AliasListTestCode.java
│ │ │ ├── AliasMapTestCode.java
│ │ │ ├── ArrayTestCode.java
│ │ │ ├── CollectionsTestCode.java
│ │ │ ├── Helper.java
│ │ │ ├── IteratorTestCode.java
│ │ │ ├── JSONTestCode.java
│ │ │ ├── ListAddAllItselfTestCode.java
│ │ │ ├── SimpleListTestCode.java
│ │ │ ├── SimpleMapTestCode.java
│ │ │ ├── SimpleMultimapTestCode.java
│ │ │ ├── SimpleQueueTestCode.java
│ │ │ ├── SimpleStackTestCode.java
│ │ │ ├── SimpleTableTestCode.java
│ │ │ ├── SimpleVectorTestCode.java
│ │ │ └── junit
│ │ │ ├── AliasListTests.java
│ │ │ ├── AliasMapTests.java
│ │ │ ├── AndroidTests.java
│ │ │ ├── ArrayTests.java
│ │ │ ├── CollectionsTests.java
│ │ │ ├── FlowDroidTest.java
│ │ │ ├── FlowDroidTests.java
│ │ │ ├── IntervalTests.java
│ │ │ ├── IteratorTests.java
│ │ │ ├── JSONTests.java
│ │ │ ├── ListAddAllItselfTests.java
│ │ │ ├── SimpleListTests.java
│ │ │ ├── SimpleMapTests.java
│ │ │ ├── SimpleMultimapTests.java
│ │ │ ├── SimpleQueueTests.java
│ │ │ ├── SimpleStackTests.java
│ │ │ ├── SimpleTableTests.java
│ │ │ ├── SimpleVectorTests.java
│ │ │ └── inherited
│ │ │ ├── infoflow
│ │ │ ├── ArrayTests.java
│ │ │ ├── ListTests.java
│ │ │ ├── MapTests.java
│ │ │ ├── QueueTests.java
│ │ │ ├── SetTests.java
│ │ │ └── VectorTests.java
│ │ │ └── infoflowSummaries
│ │ │ └── SummaryTaintWrapperTests.java
│ │ └── integration
│ │ └── test
│ │ ├── MultipleSinkTestCode.java
│ │ ├── OutputStreamTestCode.java
│ │ ├── RiverTestCode.java
│ │ └── junit
│ │ ├── AndroidRegressionTests.java
│ │ ├── BackwardAndroidRegressionTests.java
│ │ └── river
│ │ ├── AndroidRiverTests.java
│ │ ├── BaseJUnitTests.java
│ │ ├── EasyTaintWrapperRiverTests.java
│ │ ├── EasyTaintWrapperRiverWithoutPathsTests.java
│ │ ├── MultipleSinkTests.java
│ │ ├── MultipleSinksWithoutPathsTest.java
│ │ ├── OutputStreamTests.java
│ │ ├── RiverBaseJUnitTests.java
│ │ ├── RiverTests.java
│ │ ├── SummaryTaintWrapperRiverTests.java
│ │ └── SummaryTaintWrapperRiverWithoutPathsTests.java
└── testAPKs
│ ├── Collections
│ ├── AppWithConstantFields.apk
│ └── StringResourcesTest.apk
│ ├── ConditionalFlowTest.apk
│ ├── CoordinatesToURLParameter.apk
│ ├── ExternalCacheDirTest.apk
│ ├── ExternalFileWithNativeName.apk
│ ├── KotlinCollectionApp.apk
│ ├── MapClearTest.apk
│ ├── PrintWriterTest.apk
│ ├── ThreadRunnable.apk
│ ├── ThreadRunnableIndirect.apk
│ ├── TypeHierarchyTest.apk
│ ├── XMLCallbackAPI33.apk
│ ├── flowsensitiveOverwrite.apk
│ └── identityOverObjectInit.apk
├── soot-infoflow-summaries
├── .classpath
├── .gitignore
├── .project
├── .settings
│ ├── org.eclipse.core.resources.prefs
│ ├── org.eclipse.jdt.core.prefs
│ ├── org.eclipse.jdt.ui.prefs
│ └── org.eclipse.m2e.core.prefs
├── build
│ └── .gitignore
├── pom.xml
├── schema
│ ├── ClassSummary.xsd
│ └── SummaryMetaData.xsd
├── src
│ └── soot
│ │ └── jimple
│ │ └── infoflow
│ │ ├── collections
│ │ ├── data
│ │ │ ├── IndexConstraint.java
│ │ │ └── KeyConstraint.java
│ │ ├── parser
│ │ │ └── CollectionXMLConstants.java
│ │ └── taintWrappers
│ │ │ └── PrioritizingMethodSummaryProvider.java
│ │ └── methodSummary
│ │ ├── DefaultSummaryConfig.java
│ │ ├── Main.java
│ │ ├── data
│ │ ├── factory
│ │ │ └── SourceSinkFactory.java
│ │ ├── provider
│ │ │ ├── AbstractMethodSummaryProvider.java
│ │ │ ├── ConcurrentEagerSummaryProvider.java
│ │ │ ├── ConcurrentLazySummaryProvider.java
│ │ │ ├── ConcurrentMergingSummaryProvider.java
│ │ │ ├── EagerSummaryProvider.java
│ │ │ ├── IMethodSummaryProvider.java
│ │ │ ├── LazySummaryProvider.java
│ │ │ ├── MemorySummaryProvider.java
│ │ │ ├── MergingSummaryProvider.java
│ │ │ └── XMLSummaryProvider.java
│ │ ├── sourceSink
│ │ │ ├── AbstractFlowSinkSource.java
│ │ │ ├── ConstraintType.java
│ │ │ ├── FlowClear.java
│ │ │ ├── FlowConstraint.java
│ │ │ ├── FlowSink.java
│ │ │ ├── FlowSource.java
│ │ │ └── InvalidFlowSpecificationException.java
│ │ └── summary
│ │ │ ├── AbstractMethodSummary.java
│ │ │ ├── ClassMethodSummaries.java
│ │ │ ├── ClassSummaries.java
│ │ │ ├── ConcurrentClassSummaries.java
│ │ │ ├── GapDefinition.java
│ │ │ ├── ImmutableClassSummaries.java
│ │ │ ├── ImmutableMethodSummaries.java
│ │ │ ├── ImplicitLocation.java
│ │ │ ├── IsAliasType.java
│ │ │ ├── MethodClear.java
│ │ │ ├── MethodFlow.java
│ │ │ ├── MethodSummaries.java
│ │ │ ├── SourceSinkType.java
│ │ │ └── SummaryMetaData.java
│ │ ├── generator
│ │ ├── IClassSummaryHandler.java
│ │ ├── ISummaryInfoflow.java
│ │ ├── SummaryGenerationTaintWrapper.java
│ │ ├── SummaryGenerator.java
│ │ ├── SummaryGeneratorConfiguration.java
│ │ ├── SummaryGeneratorFactory.java
│ │ ├── SummaryInfoflow.java
│ │ ├── SummaryNativeCallHandler.java
│ │ └── gaps
│ │ │ ├── AbstractGapManager.java
│ │ │ ├── ConcurrentGapManager.java
│ │ │ ├── GapManager.java
│ │ │ ├── IGapManager.java
│ │ │ └── NullGapManager.java
│ │ ├── handler
│ │ └── SummaryTaintPropagationHandler.java
│ │ ├── postProcessor
│ │ ├── InfoflowResultPostProcessor.java
│ │ ├── InvalidPathBuilderStateException.java
│ │ ├── SummaryFlowCompactor.java
│ │ ├── SummaryPathBuilder.java
│ │ ├── SummaryPathBuilderContext.java
│ │ └── SummarySourceContextAndPath.java
│ │ ├── source
│ │ └── SummarySourceSinkManager.java
│ │ ├── taintWrappers
│ │ ├── AccessPathFragment.java
│ │ ├── AccessPathPropagator.java
│ │ ├── ReportMissingSummaryWrapper.java
│ │ ├── SummaryTaintWrapper.java
│ │ ├── Taint.java
│ │ ├── TaintWrapperFactory.java
│ │ └── resolvers
│ │ │ ├── SummaryQuery.java
│ │ │ ├── SummaryResolver.java
│ │ │ └── SummaryResponse.java
│ │ ├── util
│ │ └── AliasUtils.java
│ │ └── xml
│ │ ├── AbstractXMLReader.java
│ │ ├── MetaDataReader.java
│ │ ├── SummaryReader.java
│ │ ├── SummaryWriter.java
│ │ ├── SummaryXMLException.java
│ │ ├── XMLConstants.java
│ │ └── XMLMetaDataConstants.java
├── summariesManual
│ ├── SummaryMetaData.xml
│ ├── System.ArraySegment`1.xml
│ ├── System.Net.Http.ByteArrayContent.xml
│ ├── System.Net.Http.HttpRequestMessage.xml
│ ├── System.Net.Http.StringContent.xml
│ ├── System.Object.xml
│ ├── System.Security.SecureString.xml
│ ├── System.String.xml
│ ├── System.Text.Encoding.xml
│ ├── System.Text.StringBuilder.xml
│ ├── android.content.ClipData.xml
│ ├── android.content.ComponentName.xml
│ ├── android.content.Intent.xml
│ ├── android.content.IntentFilter$AuthorityEntry.xml
│ ├── android.content.IntentFilter.xml
│ ├── android.content.pm.ApplicationInfo.xml
│ ├── android.content.pm.PackageItemInfo.xml
│ ├── android.database.Cursor.xml
│ ├── android.graphics.Bitmap.xml
│ ├── android.graphics.Color.xml
│ ├── android.graphics.Point.xml
│ ├── android.graphics.PointF.xml
│ ├── android.graphics.Rect.xml
│ ├── android.location.Address.xml
│ ├── android.location.Criteria.xml
│ ├── android.location.Location.xml
│ ├── android.net.Uri$Builder.xml
│ ├── android.net.Uri.xml
│ ├── android.os.BaseBundle.xml
│ ├── android.os.Bundle.xml
│ ├── android.os.Message.xml
│ ├── android.os.Parcel.xml
│ ├── android.os.PatternMatcher.xml
│ ├── android.os.PersistableBundle.xml
│ ├── android.telephony.SmsMessage.xml
│ ├── android.telephony.gsm.SmsMessage.xml
│ ├── android.text.Editable.xml
│ ├── android.text.TextUtils.xml
│ ├── android.text.format.Formatter.xml
│ ├── android.util.Base64.xml
│ ├── android.util.Base64InputStream.xml
│ ├── android.util.Base64OutputStream.xml
│ ├── android.util.Half.xml
│ ├── android.util.JsonReader.xml
│ ├── android.util.JsonWriter.xml
│ ├── android.util.LruCache.xml
│ ├── android.util.MutableBoolean.xml
│ ├── android.util.MutableByte.xml
│ ├── android.util.MutableChar.xml
│ ├── android.util.MutableDouble.xml
│ ├── android.util.MutableFloat.xml
│ ├── android.util.MutableInt.xml
│ ├── android.util.MutableLong.xml
│ ├── android.util.MutableShort.xml
│ ├── android.util.Pair.xml
│ ├── android.util.PrintStreamPrinter.xml
│ ├── android.util.PrintWriterPrinter.xml
│ ├── android.util.Range.xml
│ ├── android.util.Size.xml
│ ├── android.util.SizeF.xml
│ ├── android.util.SparseArray.xml
│ ├── android.util.SparseBooleanArray.xml
│ ├── android.util.SparseIntArray.xml
│ ├── android.util.SparseLongArray.xml
│ ├── android.webkit.WebResourceRequest.xml
│ ├── android.widget.Button.xml
│ ├── android.widget.CheckBox.xml
│ ├── android.widget.EditText.xml
│ ├── android.widget.TextView.xml
│ ├── android.widget.Toast.xml
│ ├── androidx.collection.SimpleArrayMap.xml
│ ├── com.baidu.location.BDLocation.xml
│ ├── com.esotericsoftware.kryo.io.ByteBufferOutput.xml
│ ├── com.esotericsoftware.kryo.io.Output.xml
│ ├── com.google.api.client.http.HttpResponse.xml
│ ├── com.google.common.collect.HashBasedTable.xml
│ ├── com.google.common.collect.HashMultimap.xml
│ ├── com.google.common.collect.Multimap.xml
│ ├── com.google.common.collect.Table$Cell.xml
│ ├── com.google.common.collect.Table.xml
│ ├── com.google.common.io.BaseEncoding.xml
│ ├── com.google.common.io.ByteStreams.xml
│ ├── com.google.common.math.BigIntegerMath.xml
│ ├── com.google.common.math.DoubleMath.xml
│ ├── com.google.common.math.IntMath.xml
│ ├── com.google.common.math.LongMath.xml
│ ├── com.google.gson.Gson.xml
│ ├── com.google.gson.stream.JsonReader.xml
│ ├── com.mashape.unirest.http.HttpResponse.xml
│ ├── com.mashape.unirest.request.BaseRequest.xml
│ ├── com.mashape.unirest.request.GetRequest.xml
│ ├── com.mashape.unirest.request.HttpRequest.xml
│ ├── com.ning.http.client.Response.xml
│ ├── com.squareup.okhttp.Response.xml
│ ├── com.squareup.okhttp.ResponseBody.xml
│ ├── cz.msebera.android.httpclient.HttpResponse.xml
│ ├── cz.msebera.android.httpclient.util.EntityUtils.xml
│ ├── jakarta.servlet.ServletResponse.xml
│ ├── jakarta.servlet.http.HttpServletResponse.xml
│ ├── java.io.BufferedInputStream.xml
│ ├── java.io.BufferedOutputStream.xml
│ ├── java.io.BufferedReader.xml
│ ├── java.io.BufferedWriter.xml
│ ├── java.io.ByteArrayInputStream.xml
│ ├── java.io.ByteArrayOutputStream.xml
│ ├── java.io.CharArrayReader.xml
│ ├── java.io.CharArrayWriter.xml
│ ├── java.io.DataInputStream.xml
│ ├── java.io.DataOutputStream.xml
│ ├── java.io.File.xml
│ ├── java.io.FileInputStream.xml
│ ├── java.io.FileOutputStream.xml
│ ├── java.io.FileReader.xml
│ ├── java.io.FileWriter.xml
│ ├── java.io.FilterInputStream.xml
│ ├── java.io.InputStream.xml
│ ├── java.io.InputStreamReader.xml
│ ├── java.io.LineNumberReader.xml
│ ├── java.io.ObjectInputStream$GetField.xml
│ ├── java.io.ObjectInputStream.xml
│ ├── java.io.ObjectOutputStream$PutField.xml
│ ├── java.io.ObjectOutputStream.xml
│ ├── java.io.OutputStream.xml
│ ├── java.io.OutputStreamWriter.xml
│ ├── java.io.PrintStream.xml
│ ├── java.io.PrintWriter.xml
│ ├── java.io.StringReader.xml
│ ├── java.io.StringWriter.xml
│ ├── java.lang.Appendable.xml
│ ├── java.lang.Boolean.xml
│ ├── java.lang.Byte.xml
│ ├── java.lang.CharSequence.xml
│ ├── java.lang.Character.xml
│ ├── java.lang.Class.xml
│ ├── java.lang.Double.xml
│ ├── java.lang.Exception.xml
│ ├── java.lang.Float.xml
│ ├── java.lang.Integer.xml
│ ├── java.lang.Long.xml
│ ├── java.lang.Math.xml
│ ├── java.lang.NullPointerException.xml
│ ├── java.lang.Object.xml
│ ├── java.lang.ProcessBuilder.xml
│ ├── java.lang.RuntimeException.xml
│ ├── java.lang.Short.xml
│ ├── java.lang.String.xml
│ ├── java.lang.StringBuffer.xml
│ ├── java.lang.StringBuilder.xml
│ ├── java.lang.System.xml
│ ├── java.lang.Thread.xml
│ ├── java.lang.ThreadLocal.xml
│ ├── java.lang.Throwable.xml
│ ├── java.lang.invoke.StringConcatFactory.xml
│ ├── java.lang.ref.PhantomReference.xml
│ ├── java.lang.ref.SoftReference.xml
│ ├── java.lang.ref.WeakReference.xml
│ ├── java.lang.reflect.Array.xml
│ ├── java.lang.reflect.Field.xml
│ ├── java.math.BigDecimal.xml
│ ├── java.math.BigInteger.xml
│ ├── java.net.HttpCookie.xml
│ ├── java.net.HttpURLConnection.xml
│ ├── java.net.InetAddress.xml
│ ├── java.net.InetSocketAddress.xml
│ ├── java.net.PasswordAuthentication.xml
│ ├── java.net.Proxy.xml
│ ├── java.net.URI.xml
│ ├── java.net.URL.xml
│ ├── java.net.URLConnection.xml
│ ├── java.net.URLDecoder.xml
│ ├── java.net.URLEncoder.xml
│ ├── java.nio.ByteBuffer.xml
│ ├── java.nio.CharBuffer.xml
│ ├── java.nio.DoubleBuffer.xml
│ ├── java.nio.FloatBuffer.xml
│ ├── java.nio.IntBuffer.xml
│ ├── java.nio.LongBuffer.xml
│ ├── java.nio.ShortBuffer.xml
│ ├── java.nio.file.Path.xml
│ ├── java.nio.file.Paths.xml
│ ├── java.security.SecureRandom.xml
│ ├── java.sql.ResultSet.xml
│ ├── java.util.ArrayList.xml
│ ├── java.util.Arrays.xml
│ ├── java.util.Collection.xml
│ ├── java.util.Collections.xml
│ ├── java.util.Deque.xml
│ ├── java.util.Enumeration.xml
│ ├── java.util.HashMap.xml
│ ├── java.util.HashSet.xml
│ ├── java.util.Iterator.xml
│ ├── java.util.LinkedList.xml
│ ├── java.util.List.xml
│ ├── java.util.ListIterator.xml
│ ├── java.util.Map$Entry.xml
│ ├── java.util.Map.xml
│ ├── java.util.Optional.xml
│ ├── java.util.OptionalDouble.xml
│ ├── java.util.OptionalInt.xml
│ ├── java.util.OptionalLong.xml
│ ├── java.util.PriorityQueue.xml
│ ├── java.util.Properties.xml
│ ├── java.util.Queue.xml
│ ├── java.util.Random.xml
│ ├── java.util.Scanner.xml
│ ├── java.util.Set.xml
│ ├── java.util.Spliterator$OfDouble.xml
│ ├── java.util.Spliterator$OfInt.xml
│ ├── java.util.Spliterator$OfLong.xml
│ ├── java.util.Spliterator$OfPrimitive.xml
│ ├── java.util.Spliterator.xml
│ ├── java.util.Stack.xml
│ ├── java.util.StringTokenizer.xml
│ ├── java.util.Vector.xml
│ ├── java.util.concurrent.CopyOnWriteArrayList.xml
│ ├── java.util.concurrent.CountDownLatch.xml
│ ├── java.util.concurrent.Future.xml
│ ├── java.util.concurrent.PriorityBlockingQueue.xml
│ ├── java.util.concurrent.atomic.AtomicBoolean.xml
│ ├── java.util.concurrent.atomic.AtomicInteger.xml
│ ├── java.util.concurrent.atomic.AtomicLong.xml
│ ├── java.util.concurrent.atomic.AtomicReference.xml
│ ├── java.util.concurrent.atomic.AtomicReferenceArray.xml
│ ├── java.util.function.UnaryOperator.xml
│ ├── java.util.regex.Matcher.xml
│ ├── java.util.regex.Pattern.xml
│ ├── java.util.stream.Stream.xml
│ ├── java.util.zip.GZIPOutputStream.xml
│ ├── java.util.zip.ZipOutputStream.xml
│ ├── javax.crypto.Cipher.xml
│ ├── javax.ejb.EnterpriseBean.xml
│ ├── javax.ejb.EntityBean.xml
│ ├── javax.ejb.MessageDrivenBean.xml
│ ├── javax.ejb.SessionBean.xml
│ ├── javax.naming.directory.InitialDirContext.xml
│ ├── javax.net.ssl.HttpsURLConnection.xml
│ ├── javax.servlet.GenericServlet.xml
│ ├── javax.servlet.ServletConfig.xml
│ ├── javax.servlet.ServletContext.xml
│ ├── javax.servlet.ServletInputStream.xml
│ ├── javax.servlet.ServletOutputStream.xml
│ ├── javax.servlet.ServletRequest.xml
│ ├── javax.servlet.ServletRequestWrapper.xml
│ ├── javax.servlet.ServletResponse.xml
│ ├── javax.servlet.ServletResponseWrapper.xml
│ ├── javax.servlet.http.Cookie.xml
│ ├── javax.servlet.http.HttpServlet.xml
│ ├── javax.servlet.http.HttpServletRequest.xml
│ ├── javax.servlet.http.HttpServletRequestWrapper.xml
│ ├── javax.servlet.http.HttpServletResponse.xml
│ ├── javax.servlet.http.HttpServletResponseWrapper.xml
│ ├── javax.servlet.http.HttpSession.xml
│ ├── javax.servlet.jsp.JspContext.xml
│ ├── javax.xml.transform.stream.StreamSource.xml
│ ├── jdk.internal.misc.Unsafe.xml
│ ├── kotlin.collections.CollectionsKt.xml
│ ├── kotlin.collections.CollectionsKt___CollectionsKt.xml
│ ├── okhttp3.Headers$Builder.xml
│ ├── okhttp3.Headers.xml
│ ├── okhttp3.HttpUrl$Builder.xml
│ ├── okhttp3.HttpUrl.xml
│ ├── okhttp3.Request$Builder.xml
│ ├── okhttp3.Request.xml
│ ├── okhttp3.RequestBody.xml
│ ├── okhttp3.Response.xml
│ ├── okhttp3.ResponseBody.xml
│ ├── okio.Base64.xml
│ ├── okio.Buffer.xml
│ ├── okio.ByteString.xml
│ ├── org.apache.commons.codec.BinaryDecoder.xml
│ ├── org.apache.commons.codec.BinaryEncoder.xml
│ ├── org.apache.commons.codec.Decoder.xml
│ ├── org.apache.commons.codec.Encoder.xml
│ ├── org.apache.commons.codec.StringDecoder.xml
│ ├── org.apache.commons.codec.StringEncoder.xml
│ ├── org.apache.commons.codec.binary.Base32.xml
│ ├── org.apache.commons.codec.binary.Base64.xml
│ ├── org.apache.commons.codec.binary.BaseNCodec.xml
│ ├── org.apache.commons.codec.binary.Hex.xml
│ ├── org.apache.commons.codec.digest.Crypt.xml
│ ├── org.apache.commons.codec.digest.DigestUtils.xml
│ ├── org.apache.commons.codec.digest.Sha2Crypt.xml
│ ├── org.apache.commons.codec.digest.UnixCrypt.xml
│ ├── org.apache.commons.codec.net.URLCodec.xml
│ ├── org.apache.commons.lang.StringEscapeUtils.xml
│ ├── org.apache.commons.lang3.StringEscapeUtils.xml
│ ├── org.apache.commons.lang3.StringUtils.xml
│ ├── org.apache.commons.mail.MultiPartEmail.xml
│ ├── org.apache.commons.mail.SimpleEmail.xml
│ ├── org.apache.http.HttpResponse.xml
│ ├── org.apache.http.RequestLine.xml
│ ├── org.apache.http.auth.KerberosCredentials.xml
│ ├── org.apache.http.auth.NTCredentials.xml
│ ├── org.apache.http.auth.UsernamePasswordCredentials.xml
│ ├── org.apache.http.client.entity.UrlEncodedFormEntity.xml
│ ├── org.apache.http.client.fluent.Content.xml
│ ├── org.apache.http.client.fluent.Response.xml
│ ├── org.apache.http.client.methods.AbstractExecutionAwareRequest.xml
│ ├── org.apache.http.client.methods.CloseableHttpResponse.xml
│ ├── org.apache.http.client.methods.HttpDelete.xml
│ ├── org.apache.http.client.methods.HttpEntityEnclosingRequestBase.xml
│ ├── org.apache.http.client.methods.HttpGet.xml
│ ├── org.apache.http.client.methods.HttpHead.xml
│ ├── org.apache.http.client.methods.HttpOptions.xml
│ ├── org.apache.http.client.methods.HttpPatch.xml
│ ├── org.apache.http.client.methods.HttpPost.xml
│ ├── org.apache.http.client.methods.HttpPut.xml
│ ├── org.apache.http.client.methods.HttpRequestBase.xml
│ ├── org.apache.http.client.methods.HttpTrace.xml
│ ├── org.apache.http.entity.AbstractHttpEntity.xml
│ ├── org.apache.http.entity.StringEntity.xml
│ ├── org.apache.http.entity.mime.content.AbstractContentBody.xml
│ ├── org.apache.http.entity.mime.content.ByteArrayBody.xml
│ ├── org.apache.http.entity.mime.content.FileBody.xml
│ ├── org.apache.http.entity.mime.content.InputStreamBody.xml
│ ├── org.apache.http.entity.mime.content.StringBody.xml
│ ├── org.apache.http.impl.client.AbstractHttpClient.xml
│ ├── org.apache.http.impl.client.AutoRetryHttpClient.xml
│ ├── org.apache.http.impl.client.BasicCredentialsProvider.xml
│ ├── org.apache.http.impl.client.CloseableHttpClient.xml
│ ├── org.apache.http.impl.client.ContentEncodingHttpClient.xml
│ ├── org.apache.http.impl.client.DecompressingHttpClient.xml
│ ├── org.apache.http.impl.client.DefaultHttpClient.xml
│ ├── org.apache.http.impl.client.SystemDefaultCredentialsProvider.xml
│ ├── org.apache.http.impl.client.SystemDefaultHttpClient.xml
│ ├── org.apache.http.message.AbstractHttpMessage.xml
│ ├── org.apache.http.message.BasicHttpEntityEnclosingRequest.xml
│ ├── org.apache.http.message.BasicHttpRequest.xml
│ ├── org.apache.http.message.BasicNameValuePair.xml
│ ├── org.apache.http.util.EntityUtils.xml
│ ├── org.apache.logging.log4j.util.Strings.xml
│ ├── org.apache.logging.log4j.util.Unbox.xml
│ ├── org.asynchttpclient.Response.xml
│ ├── org.eclipse.jetty.client.api.ContentResponse.xml
│ ├── org.joda.time.DateTimeZone.xml
│ ├── org.joda.time.tz.ZoneInfoProvider.xml
│ ├── org.json.JSONArray.xml
│ ├── org.json.JSONObject.xml
│ ├── org.w3c.dom.Document.xml
│ ├── org.w3c.dom.Element.xml
│ ├── org.w3c.dom.Node.xml
│ ├── org.w3c.dom.NodeList.xml
│ ├── org.xml.sax.InputSource.xml
│ ├── org.xml.sax.XMLReader.xml
│ ├── org.xmlpull.v1.XmlSerializer.xml
│ └── sun.misc.Unsafe.xml
├── test
│ └── soot
│ │ └── jimple
│ │ └── infoflow
│ │ └── test
│ │ ├── .gitignore
│ │ └── methodSummary
│ │ ├── ApiClass.java
│ │ ├── ApiClassClient.java
│ │ ├── ApiInternalClass.java
│ │ ├── ArbitraryAccessPath.java
│ │ ├── Callbacks.java
│ │ ├── ContextSensitivity.java
│ │ ├── Data.java
│ │ ├── Data2.java
│ │ ├── FieldToPara.java
│ │ ├── FieldToReturn.java
│ │ ├── GapClass.java
│ │ ├── IApiClass.java
│ │ ├── IGapClass.java
│ │ ├── IUserCodeClass.java
│ │ ├── InheritanceTests.java
│ │ ├── ListTestCode.java
│ │ ├── Pair.java
│ │ ├── ParaToField.java
│ │ ├── ParaToParaFlows.java
│ │ ├── ParaToReturn.java
│ │ ├── TestCollection.java
│ │ ├── UserCodeClass.java
│ │ └── junit
│ │ ├── ApiTestHelper.java
│ │ ├── ApiTests.java
│ │ ├── ArbitraryAccessPathTests.java
│ │ ├── BaseSummaryTaintWrapperTests.java
│ │ ├── CallbackTests.java
│ │ ├── ContextSensitivityTests.java
│ │ ├── DataClassTests.java
│ │ ├── FieldToParaTests.java
│ │ ├── FieldToReturnTests.java
│ │ ├── HierarchyTests.java
│ │ ├── InheritanceTests.java
│ │ ├── JDKTests.java
│ │ ├── JUnitTests.java
│ │ ├── ParaToFieldTests.java
│ │ ├── ParaToParaTests.java
│ │ ├── ParaToReturnTests.java
│ │ ├── SummaryTaintWrapperTests.java
│ │ ├── TaintWrapperFactory.java
│ │ ├── TestHelper.java
│ │ ├── WrapperListTestConfig.java
│ │ ├── WrapperListTests.java
│ │ ├── WrapperMapTests.java
│ │ ├── WrapperQueueTests.java
│ │ ├── WrapperSetTests.java
│ │ ├── WrapperVectorTests.java
│ │ ├── backward
│ │ ├── SummaryTaintWrapperTests.java
│ │ ├── WrapperListTests.java
│ │ ├── WrapperMapTests.java
│ │ ├── WrapperQueueTests.java
│ │ ├── WrapperSetTests.java
│ │ └── WrapperVectorTests.java
│ │ └── forward
│ │ ├── SummaryTaintWrapperTests.java
│ │ ├── WrapperListTests.java
│ │ ├── WrapperMapTests.java
│ │ ├── WrapperQueueTests.java
│ │ ├── WrapperSetTests.java
│ │ └── WrapperVectorTests.java
└── testSummaries
│ ├── soot.jimple.infoflow.test.methodSummary.ApiClass.xml
│ ├── soot.jimple.infoflow.test.methodSummary.Data.xml
│ ├── soot.jimple.infoflow.test.methodSummary.GapClass.xml
│ └── soot.jimple.infoflow.test.methodSummary.TestCollection.xml
└── soot-infoflow
├── .classpath
├── .externalToolBuilders
├── org.eclipse.pde.ManifestBuilder.launch
└── org.eclipse.pde.SchemaBuilder.launch
├── .gitattributes
├── .gitignore
├── .project
├── .settings
├── org.eclipse.core.resources.prefs
├── org.eclipse.jdt.core.prefs
├── org.eclipse.jdt.ui.prefs
└── org.eclipse.m2e.core.prefs
├── BackwardsWrapperExcludeList.txt
├── EasyTaintWrapperSource.txt
├── META-INF
└── MANIFEST.MF
├── SecuriBenchReadme.txt
├── license.txt
├── pom.xml
├── schema
└── ClassSummaryC.xsd
├── securiBench
└── securibench
│ └── micro
│ ├── BasicTestCase.java
│ ├── MicroTestCase.java
│ ├── aliasing
│ ├── Aliasing1.java
│ ├── Aliasing2.java
│ ├── Aliasing3.java
│ ├── Aliasing4.java
│ ├── Aliasing5.java
│ └── Aliasing6.java
│ ├── arrays
│ ├── Arrays1.java
│ ├── Arrays10.java
│ ├── Arrays2.java
│ ├── Arrays3.java
│ ├── Arrays4.java
│ ├── Arrays5.java
│ ├── Arrays6.java
│ ├── Arrays7.java
│ ├── Arrays8.java
│ └── Arrays9.java
│ ├── basic
│ ├── Basic0.java
│ ├── Basic1.java
│ ├── Basic10.java
│ ├── Basic11.java
│ ├── Basic12.java
│ ├── Basic13.java
│ ├── Basic14.java
│ ├── Basic15.java
│ ├── Basic16.java
│ ├── Basic17.java
│ ├── Basic18.java
│ ├── Basic19.java
│ ├── Basic2.java
│ ├── Basic20.java
│ ├── Basic21.java
│ ├── Basic22.java
│ ├── Basic23.java
│ ├── Basic24.java
│ ├── Basic25.java
│ ├── Basic26.java
│ ├── Basic27.java
│ ├── Basic28.java
│ ├── Basic29.java
│ ├── Basic3.java
│ ├── Basic30.java
│ ├── Basic31.java
│ ├── Basic32.java
│ ├── Basic33.java
│ ├── Basic34.java
│ ├── Basic35.java
│ ├── Basic36.java
│ ├── Basic37.java
│ ├── Basic38.java
│ ├── Basic39.java
│ ├── Basic4.java
│ ├── Basic40.java
│ ├── Basic41.java
│ ├── Basic42.java
│ ├── Basic5.java
│ ├── Basic6.java
│ ├── Basic7.java
│ ├── Basic8.java
│ └── Basic9.java
│ ├── collections
│ ├── Collections1.java
│ ├── Collections10.java
│ ├── Collections11.java
│ ├── Collections11b.java
│ ├── Collections12.java
│ ├── Collections13.java
│ ├── Collections14.java
│ ├── Collections2.java
│ ├── Collections3.java
│ ├── Collections4.java
│ ├── Collections5.java
│ ├── Collections6.java
│ ├── Collections7.java
│ ├── Collections8.java
│ └── Collections9.java
│ ├── datastructures
│ ├── Datastructures1.java
│ ├── Datastructures2.java
│ ├── Datastructures3.java
│ ├── Datastructures4.java
│ ├── Datastructures5.java
│ └── Datastructures6.java
│ ├── factories
│ ├── Factories1.java
│ ├── Factories2.java
│ └── Factories3.java
│ ├── inter
│ ├── Inter1.java
│ ├── Inter10.java
│ ├── Inter11.java
│ ├── Inter12.java
│ ├── Inter13.java
│ ├── Inter14.java
│ ├── Inter2.java
│ ├── Inter3.java
│ ├── Inter4.java
│ ├── Inter5.java
│ ├── Inter6.java
│ ├── Inter7.java
│ ├── Inter8.java
│ └── Inter9.java
│ ├── pred
│ ├── Pred1.java
│ ├── Pred2.java
│ ├── Pred3.java
│ ├── Pred4.java
│ ├── Pred5.java
│ ├── Pred6.java
│ ├── Pred7.java
│ ├── Pred8.java
│ └── Pred9.java
│ ├── reflection
│ ├── Refl1.java
│ ├── Refl2.java
│ ├── Refl3.java
│ └── Refl4.java
│ ├── sanitizers
│ ├── Sanitizers1.java
│ ├── Sanitizers2.java
│ ├── Sanitizers3.java
│ ├── Sanitizers4.java
│ ├── Sanitizers5.java
│ └── Sanitizers6.java
│ ├── session
│ ├── Session1.java
│ ├── Session2.java
│ └── Session3.java
│ └── strong_updates
│ ├── StrongUpdates1.java
│ ├── StrongUpdates2.java
│ ├── StrongUpdates3.java
│ ├── StrongUpdates4.java
│ └── StrongUpdates5.java
├── src
└── soot
│ └── jimple
│ └── infoflow
│ ├── AbstractInfoflow.java
│ ├── AnalysisPhase.java
│ ├── BackwardsInfoflow.java
│ ├── IInfoflow.java
│ ├── Infoflow.java
│ ├── InfoflowConfiguration.java
│ ├── InfoflowManager.java
│ ├── aliasing
│ ├── AbstractAliasStrategy.java
│ ├── AbstractBulkAliasStrategy.java
│ ├── AbstractInteractiveAliasStrategy.java
│ ├── Aliasing.java
│ ├── BackwardsFlowSensitiveAliasStrategy.java
│ ├── FlowSensitiveAliasStrategy.java
│ ├── IAliasingStrategy.java
│ ├── ImplicitFlowAliasStrategy.java
│ ├── LazyAliasingStrategy.java
│ ├── NullAliasStrategy.java
│ └── PtsBasedAliasStrategy.java
│ ├── callbacks
│ └── CallbackDefinition.java
│ ├── callmappers
│ ├── CallerCalleeManager.java
│ ├── ICallerCalleeArgumentMapper.java
│ ├── IdentityCallerCalleeMapper.java
│ ├── ReflectionCallerCalleeMapper.java
│ ├── UnknownCallerCalleeMapper.java
│ └── VirtualEdgeTargetCallerCalleeMapper.java
│ ├── cfg
│ ├── BiDirICFGFactory.java
│ ├── DefaultBiDiICFGFactory.java
│ ├── FlowDroidEssentialMethodTag.java
│ ├── FlowDroidSinkStatement.java
│ ├── FlowDroidSourceStatement.java
│ ├── FlowDroidUserClass.java
│ └── LibraryClassPatcher.java
│ ├── cmdInfoflow.java
│ ├── codeOptimization
│ ├── AddNopStmt.java
│ ├── DeadCodeEliminator.java
│ ├── ICodeOptimizer.java
│ └── InterproceduralConstantValuePropagator.java
│ ├── collect
│ ├── AtomicBitSet.java
│ ├── BlackHoleCollection.java
│ ├── ConcurrentCountingMap.java
│ ├── ConcurrentHashSet.java
│ ├── ConcurrentIdentityHashMap.java
│ ├── ConcurrentIdentityHashMultiMap.java
│ ├── IdentityPair.java
│ ├── IdentityWrapper.java
│ ├── MutableTwoElementSet.java
│ ├── MyConcurrentHashMap.java
│ └── WeakConcurrentHashSet.java
│ ├── collections
│ ├── ICollectionsSupport.java
│ ├── analyses
│ │ ├── ListSizeAnalysis.java
│ │ └── ReadOnlyListViewAnalysis.java
│ ├── codeOptimization
│ │ ├── ConstantTagFolding.java
│ │ └── ReplacementCandidates.java
│ ├── context
│ │ ├── IntervalContext.java
│ │ ├── KeySetContext.java
│ │ ├── PositionBasedContext.java
│ │ ├── UnknownContext.java
│ │ └── ValueBasedContext.java
│ ├── problems
│ │ └── rules
│ │ │ └── forward
│ │ │ ├── ArrayWithIndexPropagationRule.java
│ │ │ └── CollectionWrapperPropagationRule.java
│ ├── strategies
│ │ ├── containers
│ │ │ ├── AbstractListStrategy.java
│ │ │ ├── ConstantMapStrategy.java
│ │ │ ├── ConstantMapStrategyFactory.java
│ │ │ ├── DefaultConfigContainerStrategyFactory.java
│ │ │ ├── IContainerStrategy.java
│ │ │ ├── IContainerStrategyFactory.java
│ │ │ ├── SmashAllContainerStrategy.java
│ │ │ ├── TestConstantStrategy.java
│ │ │ └── shift
│ │ │ │ ├── IShiftOperation.java
│ │ │ │ ├── InvalidateShift.java
│ │ │ │ ├── MinMaxShift.java
│ │ │ │ └── PreciseShift.java
│ │ └── widening
│ │ │ ├── AbstractWidening.java
│ │ │ ├── WideningOnRevisitStrategy.java
│ │ │ ├── WideningOnShiftOperationStrategy.java
│ │ │ ├── WideningStrategy.java
│ │ │ └── WideningTaintPropagationHandler.java
│ └── util
│ │ ├── AliasAbstractionSet.java
│ │ ├── ConcurrentSetWithRunnable.java
│ │ ├── ImmutableArraySet.java
│ │ ├── MySpecialMultiMap.java
│ │ ├── NonNullHashSet.java
│ │ └── Tristate.java
│ ├── config
│ ├── IInfoflowConfig.java
│ └── PreciseCollectionStrategy.java
│ ├── data
│ ├── AbstractMethodAndClass.java
│ ├── Abstraction.java
│ ├── AbstractionAtSink.java
│ ├── AccessPath.java
│ ├── AccessPathFactory.java
│ ├── AccessPathFragment.java
│ ├── ContainerContext.java
│ ├── FlowDroidMemoryManager.java
│ ├── SootFieldAndClass.java
│ ├── SootMethodAndClass.java
│ ├── SourceContext.java
│ ├── SourceContextAndPath.java
│ ├── accessPaths
│ │ ├── IAccessPathReductionStrategy.java
│ │ ├── SameFieldReductionStrategy.java
│ │ └── This0ReductionStrategy.java
│ └── pathBuilders
│ │ ├── AbstractAbstractionPathBuilder.java
│ │ ├── BatchPathBuilder.java
│ │ ├── ConcurrentAbstractionPathBuilder.java
│ │ ├── ContextInsensitivePathBuilder.java
│ │ ├── ContextInsensitiveSourceFinder.java
│ │ ├── ContextSensitivePathBuilder.java
│ │ ├── DefaultPathBuilderFactory.java
│ │ ├── EmptyPathBuilder.java
│ │ ├── IAbstractionPathBuilder.java
│ │ ├── IPathBuilderFactory.java
│ │ └── RecursivePathBuilder.java
│ ├── entryPointCreators
│ ├── BaseEntryPointCreator.java
│ ├── DefaultEntryPointCreator.java
│ ├── IEntryPointCreator.java
│ ├── SequentialEntryPointCreator.java
│ ├── SimulatedCodeElementTag.java
│ └── SimulatedDynamicInvokeTag.java
│ ├── globalTaints
│ └── GlobalTaintManager.java
│ ├── handlers
│ ├── PostAnalysisHandler.java
│ ├── PreAnalysisHandler.java
│ ├── ResultsAvailableHandler.java
│ ├── ResultsAvailableHandler2.java
│ ├── SequentialTaintPropagationHandler.java
│ └── TaintPropagationHandler.java
│ ├── ipc
│ ├── DefaultIPCManager.java
│ ├── EmptyIPCManager.java
│ ├── IIPCManager.java
│ └── MethodBasedIPCManager.java
│ ├── memory
│ ├── AbstractSolverWatcher.java
│ ├── FlowDroidMemoryWatcher.java
│ ├── FlowDroidTimeoutWatcher.java
│ ├── IMemoryBoundedSolver.java
│ ├── ISolverTerminationReason.java
│ ├── ISolversTerminatedCallback.java
│ ├── MemoryWarningSystem.java
│ └── reasons
│ │ ├── AbortRequestedReason.java
│ │ ├── MultiReason.java
│ │ ├── OutOfMemoryReason.java
│ │ └── TimeoutReason.java
│ ├── nativeCallHandler
│ ├── AbstractNativeCallHandler.java
│ ├── BackwardNativeCallHandler.java
│ ├── DefaultNativeCallHandler.java
│ └── INativeCallHandler.java
│ ├── problems
│ ├── AbstractInfoflowProblem.java
│ ├── AliasProblem.java
│ ├── BackwardsAliasProblem.java
│ ├── BackwardsInfoflowProblem.java
│ ├── InfoflowProblem.java
│ ├── TaintPropagationResults.java
│ └── rules
│ │ ├── AbstractTaintPropagationRule.java
│ │ ├── BackwardPropagationRuleManagerFactory.java
│ │ ├── DefaultPropagationRuleManagerFactory.java
│ │ ├── DummyArrayContext.java
│ │ ├── EmptyPropagationRuleManagerFactory.java
│ │ ├── IArrayContextProvider.java
│ │ ├── IPropagationRuleManagerFactory.java
│ │ ├── ITaintPropagationRule.java
│ │ ├── IdentityPropagationRuleManager.java
│ │ ├── PropagationRuleManager.java
│ │ ├── backward
│ │ ├── BackwardsArrayPropagationRule.java
│ │ ├── BackwardsClinitRule.java
│ │ ├── BackwardsExceptionPropagationRule.java
│ │ ├── BackwardsImplicitFlowRule.java
│ │ ├── BackwardsSinkPropagationRule.java
│ │ ├── BackwardsSourcePropagationRule.java
│ │ ├── BackwardsStrongUpdatePropagationRule.java
│ │ └── BackwardsWrapperRule.java
│ │ └── forward
│ │ ├── ArrayPropagationRule.java
│ │ ├── ExceptionPropagationRule.java
│ │ ├── ImplicitPropagtionRule.java
│ │ ├── SinkPropagationRule.java
│ │ ├── SkipSystemClassRule.java
│ │ ├── SourcePropagationRule.java
│ │ ├── StaticPropagationRule.java
│ │ ├── StopAfterFirstKFlowsPropagationRule.java
│ │ ├── StrongUpdatePropagationRule.java
│ │ ├── TypingPropagationRule.java
│ │ └── WrapperPropagationRule.java
│ ├── resources
│ └── controls
│ │ ├── JavaSwingLayoutControl.java
│ │ ├── LayoutControl.java
│ │ ├── SwingPasswordField.java
│ │ └── SwingTextField.java
│ ├── results
│ ├── AbstractResultSourceSinkInfo.java
│ ├── BackwardsInfoflowResults.java
│ ├── DataFlowResult.java
│ ├── InfoflowPerformanceData.java
│ ├── InfoflowResults.java
│ ├── ResultSinkInfo.java
│ ├── ResultSourceInfo.java
│ ├── util
│ │ └── InfoflowResultComparator.java
│ └── xml
│ │ ├── AbstractSerializedSourceSink.java
│ │ ├── InfoflowResultsReader.java
│ │ ├── InfoflowResultsSerializer.java
│ │ ├── SerializedAccessPath.java
│ │ ├── SerializedInfoflowResults.java
│ │ ├── SerializedPathElement.java
│ │ ├── SerializedSinkInfo.java
│ │ ├── SerializedSourceInfo.java
│ │ └── XmlConstants.java
│ ├── rifl
│ ├── RIFLConstants.java
│ ├── RIFLDocument.java
│ ├── RIFLParser.java
│ ├── RIFLSourceSinkDefinitionProvider.java
│ └── RIFLWriter.java
│ ├── river
│ ├── AdditionalFlowCondition.java
│ ├── AdditionalFlowInfoSourceContext.java
│ ├── AdditionalFlowInfoSpecification.java
│ ├── BackwardNoSinkRuleManagerFactory.java
│ ├── ConditionalFlowPostProcessor.java
│ ├── ConditionalFlowSourceSinkManagerWrapper.java
│ ├── ConditionalSecondarySourceDefinition.java
│ ├── EmptyUsageContextProvider.java
│ ├── IAdditionalFlowSinkPropagationRule.java
│ ├── IConditionalFlowManager.java
│ ├── IUsageContextProvider.java
│ ├── SecondaryFlowGenerator.java
│ ├── SecondaryFlowListener.java
│ └── SecondarySinkDefinition.java
│ ├── solver
│ ├── AbstractIFDSSolver.java
│ ├── DefaultSolverPeerGroup.java
│ ├── EndSummary.java
│ ├── IFollowReturnsPastSeedsHandler.java
│ ├── IInfoflowSolver.java
│ ├── ISolverPeerGroup.java
│ ├── IStrategyBasedParallelSolver.java
│ ├── IncomingRecord.java
│ ├── PredecessorShorteningMode.java
│ ├── Propagator.java
│ ├── cfg
│ │ ├── BackwardsInfoflowCFG.java
│ │ ├── IInfoflowCFG.java
│ │ └── InfoflowCFG.java
│ ├── executors
│ │ ├── InterruptableExecutor.java
│ │ └── SetPoolExecutor.java
│ ├── fastSolver
│ │ ├── DefaultSchedulingStrategy.java
│ │ ├── FastSolverLinkedNode.java
│ │ ├── IFDSSolver.java
│ │ ├── ISchedulingStrategy.java
│ │ ├── InfoflowSolver.java
│ │ ├── LocalWorklistTask.java
│ │ ├── WeakPathEdge.java
│ │ └── flowInsensitive
│ │ │ ├── FlowInsensitiveSolver.java
│ │ │ └── InfoflowSolver.java
│ ├── functions
│ │ ├── SolverCallFlowFunction.java
│ │ ├── SolverCallToReturnFlowFunction.java
│ │ ├── SolverNormalFlowFunction.java
│ │ └── SolverReturnFlowFunction.java
│ ├── gcSolver
│ │ ├── AbstractGarbageCollector.java
│ │ ├── AbstractReferenceCountingGarbageCollector.java
│ │ ├── AbstractReferenceProvider.java
│ │ ├── AggressiveGarbageCollector.java
│ │ ├── AheadOfTimeReferenceProvider.java
│ │ ├── DefaultGarbageCollector.java
│ │ ├── GCSolverPeerGroup.java
│ │ ├── GarbageCollectionTrigger.java
│ │ ├── GarbageCollectorPeerGroup.java
│ │ ├── IFDSSolver.java
│ │ ├── IGCReferenceProvider.java
│ │ ├── IGarbageCollector.java
│ │ ├── IGarbageCollectorPeer.java
│ │ ├── InfoflowSolver.java
│ │ ├── MethodLevelReferenceCountingGarbageCollector.java
│ │ ├── NullGarbageCollector.java
│ │ ├── OnDemandReferenceProvider.java
│ │ ├── ThreadedGarbageCollector.java
│ │ └── fpc
│ │ │ ├── AbstrationDependencyGraph.java
│ │ │ ├── AggressiveGarbageCollector.java
│ │ │ ├── FineGrainedReferenceCountingGarbageCollector.java
│ │ │ ├── IFDSSolver.java
│ │ │ ├── IGraph.java
│ │ │ ├── InfoflowSolver.java
│ │ │ └── NormalGarbageCollector.java
│ ├── memory
│ │ ├── DefaultMemoryManagerFactory.java
│ │ ├── IMemoryManager.java
│ │ └── IMemoryManagerFactory.java
│ └── sparseSolver
│ │ ├── SparseInfoflowSolver.java
│ │ └── propagation
│ │ ├── AbstractSparsePropagation.java
│ │ ├── DensePropagation.java
│ │ ├── IPropagationStrategy.java
│ │ ├── PreciseSparsePropagation.java
│ │ └── SimpleSparsePropagation.java
│ ├── sourcesSinks
│ ├── definitions
│ │ ├── AbstractSourceSinkDefinition.java
│ │ ├── AccessPathTuple.java
│ │ ├── FieldSourceSinkDefinition.java
│ │ ├── FilteringSourceSinkDefinitionProvider.java
│ │ ├── IAccessPathBasedSourceSinkDefinition.java
│ │ ├── ISourceSinkCategory.java
│ │ ├── ISourceSinkDefinition.java
│ │ ├── ISourceSinkDefinitionProvider.java
│ │ ├── ImmutableAccessPathTuple.java
│ │ ├── InvalidAccessPathException.java
│ │ ├── MethodSourceSinkDefinition.java
│ │ ├── NullSourceSinkDefinitionProvider.java
│ │ ├── SourceSinkCondition.java
│ │ ├── SourceSinkType.java
│ │ └── StatementSourceSinkDefinition.java
│ └── manager
│ │ ├── AbstractSourceSinkInfo.java
│ │ ├── BaseSourceSinkManager.java
│ │ ├── DefaultSourceSinkManager.java
│ │ ├── EmptySourceSinkManager.java
│ │ ├── IOneSourceAtATimeManager.java
│ │ ├── IReversibleSourceSinkManager.java
│ │ ├── ISourceSinkManager.java
│ │ ├── MethodBasedSourceSinkManager.java
│ │ ├── SinkInfo.java
│ │ └── SourceInfo.java
│ ├── taintWrappers
│ ├── AbstractTaintWrapper.java
│ ├── EasyTaintWrapper.java
│ ├── IReversibleTaintWrapper.java
│ ├── ITaintPropagationWrapper.java
│ ├── ITaintWrapperDataFlowAnalysis.java
│ ├── IdentityTaintWrapper.java
│ ├── RecordingTaintWrapper.java
│ └── TaintWrapperSet.java
│ ├── threading
│ ├── DefaultExecutorFactory.java
│ └── IExecutorFactory.java
│ ├── typing
│ └── TypeUtils.java
│ ├── util
│ ├── ArgParser.java
│ ├── BaseSelector.java
│ ├── ByReferenceBoolean.java
│ ├── DebugAbstractionTree.java
│ ├── DebugFlowFunctionTaintPropagationHandler.java
│ ├── ExtendedAtomicInteger.java
│ ├── ResourceUtils.java
│ ├── SootMethodRepresentationParser.java
│ ├── SootUtils.java
│ ├── SystemClassHandler.java
│ ├── ThreadUtils.java
│ ├── extensiblelist
│ │ └── ExtensibleList.java
│ └── preanalyses
│ │ └── SingleLiveVariableAnalysis.java
│ └── values
│ ├── IValueProvider.java
│ └── SimpleConstantValueProvider.java
└── test
└── soot
└── jimple
└── infoflow
├── config
├── ConfigForTest.java
└── ConfigSecuriBench.java
└── test
├── ArrayTestCode.java
├── BasicTestCode.java
├── CallbackTestCode.java
├── ConstantTestCode.java
├── ContextSensitivityTestCode.java
├── EasyWrapperTestCode.java
├── ExceptionTestCode.java
├── ForwardBackwardTest.java
├── HTTPTestCode.java
├── HeapTestCode.java
├── HierarchyTestCode.java
├── ImplicitFlowTestCode.java
├── InFunctionCode.java
├── InheritanceTestCode.java
├── LengthTestCode.java
├── ListTestCode.java
├── MapTestCode.java
├── MultiTestCode.java
├── OperationSemanticTestCode.java
├── OtherTestCode.java
├── OverwriteTestCode.java
├── QueueTestCode.java
├── ReflectionTestCode.java
├── SetTestCode.java
├── SingleJoinPointTestCode.java
├── SourceSinkTestCode.java
├── StaticTestCode.java
├── StringTestCode.java
├── ThreadTestCode.java
├── TypeTestCode.java
├── VectorTestCode.java
├── android
├── AccountManager.java
├── Base64.java
├── Bundle.java
├── ConnectionManager.java
├── Location.java
├── LocationManager.java
├── LocationProvider.java
└── TelephonyManager.java
├── base
└── AbstractJUnitTests.java
├── collect
├── AtomicBitSetTest.java
└── ConcurrentCountingMapTest.java
├── junit
├── AlwaysShortenTests.java
├── ArrayTests.java
├── BasicTests.java
├── BytecodeTests.java
├── CallbackTests.java
├── ConstantTests.java
├── ContextSensitivityTests.java
├── EasyWrapperListTests.java
├── EasyWrapperTests.java
├── ExceptionTests.java
├── ExtensibleListTest.java
├── FutureTests.java
├── HTTPTests.java
├── HeapTests.java
├── HeapTestsPtsAliasing.java
├── HierarchyTests.java
├── ImplicitFlowTests.java
├── InFunctionTests.java
├── InheritanceTests.java
├── JUnitTests.java
├── LengthTests.java
├── ListTests.java
├── MapTests.java
├── MemoryWatcherTest.java
├── MethodRepresentationTests.java
├── MultiTest.java
├── OperationSemanticTests.java
├── OtherTests.java
├── OverwriteTests.java
├── QueueTests.java
├── ReflectionTests.java
├── SetTests.java
├── SingleJoinPointTests.java
├── SourceSinkTests.java
├── StaticTests.java
├── StringTests.java
├── ThreadTests.java
├── TypeTests.java
├── VectorTests.java
├── backward
│ ├── AlwaysShortenTests.java
│ ├── ArrayTests.java
│ ├── BasicTests.java
│ ├── BytecodeTests.java
│ ├── CallbackTests.java
│ ├── ConstantTests.java
│ ├── ContextSensitivityTests.java
│ ├── EasyWrapperListTests.java
│ ├── EasyWrapperTests.java
│ ├── ExceptionTests.java
│ ├── FutureTests.java
│ ├── HTTPTests.java
│ ├── HeapTests.java
│ ├── HierarchyTests.java
│ ├── ImplicitFlowTests.java
│ ├── InFunctionTests.java
│ ├── InheritanceTests.java
│ ├── LengthTests.java
│ ├── ListTests.java
│ ├── MapTests.java
│ ├── MultiTest.java
│ ├── OperationSemanticTests.java
│ ├── OtherTests.java
│ ├── OverwriteTests.java
│ ├── QueueTests.java
│ ├── ReflectionTests.java
│ ├── SetTests.java
│ ├── SingleJoinPointTests.java
│ ├── SourceSinkTests.java
│ ├── StaticTests.java
│ ├── StringTests.java
│ ├── ThreadTests.java
│ ├── TypeTests.java
│ └── VectorTests.java
└── forward
│ ├── AlwaysShortenTests.java
│ ├── ArrayTests.java
│ ├── BasicTests.java
│ ├── BytecodeTests.java
│ ├── CallbackTests.java
│ ├── ConstantTests.java
│ ├── ContextSensitivityTests.java
│ ├── EasyWrapperListTests.java
│ ├── EasyWrapperTests.java
│ ├── ExceptionTests.java
│ ├── FutureTests.java
│ ├── HTTPTests.java
│ ├── HeapTests.java
│ ├── HeapTestsPtsAliasing.java
│ ├── HierarchyTests.java
│ ├── ImplicitFlowTests.java
│ ├── InFunctionTests.java
│ ├── InheritanceTests.java
│ ├── LengthTests.java
│ ├── ListTests.java
│ ├── MapTests.java
│ ├── MultiTest.java
│ ├── OperationSemanticTests.java
│ ├── OtherTests.java
│ ├── OverwriteTests.java
│ ├── QueueTests.java
│ ├── ReflectionTests.java
│ ├── SetTests.java
│ ├── SingleJoinPointTests.java
│ ├── SourceSinkTests.java
│ ├── StaticTests.java
│ ├── StringTests.java
│ ├── ThreadTests.java
│ ├── TypeTests.java
│ └── VectorTests.java
├── securibench
├── AliasingTests.java
├── ArrayTests.java
├── BasicTests.java
├── CollectionTests.java
├── DatastructureTests.java
├── FactoryTests.java
├── InterTests.java
├── JUnitTests.java
├── PredTests.java
├── ReflectionTests.java
├── SanitizerTests.java
├── SessionTests.java
├── StrongUpdateTests.java
├── TestCaseCreator.java
└── supportClasses
│ ├── DummyHttpRequest.java
│ ├── DummyHttpResponse.java
│ ├── DummyHttpSession.java
│ ├── DummyServletConfig.java
│ ├── DummyServletContext.java
│ └── DummyServletInputStream.java
└── utilclasses
├── C1static.java
├── C2static.java
├── ClassWithField.java
├── ClassWithField2.java
├── ClassWithFinal.java
├── ClassWithStatic.java
└── D1static.java
/.gitignore:
--------------------------------------------------------------------------------
1 | soot-infoflow/jimpleCode/
2 | soot-infoflow-summaries/build/
3 | soot-infoflow-summaries/target/
4 | /.metadata
5 | /.recommenders
6 | .idea/
7 | *.iml
8 | target/
9 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "DroidBench"]
2 | path = DroidBench
3 | url = https://github.com/secure-software-engineering/DroidBench.git
4 | branch = develop
5 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | parent
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.m2e.core.maven2Builder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.m2e.core.maven2Nature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/soot-infoflow-android/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 |
3 | *.java text
4 | *.class binary
5 | *.jar binary
--------------------------------------------------------------------------------
/soot-infoflow-android/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | /JimpleFiles
3 | /sootOutput
4 | /ant.settings
5 | /build
6 | /reports
7 | /insecureBank/InsecureBank
8 | /out.log
9 | /target
10 |
--------------------------------------------------------------------------------
/soot-infoflow-android/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | soot-infoflow-android
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javanature
21 | org.eclipse.m2e.core.maven2Nature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/soot-infoflow-android/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 | encoding/schema=UTF-8
4 | encoding/src=UTF-8
5 | encoding/test=UTF-8
6 |
--------------------------------------------------------------------------------
/soot-infoflow-android/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/soot-infoflow-android/SourcesAndSinks_SharedPrefsOnly.txt:
--------------------------------------------------------------------------------
1 | -> _SINK_
2 | -> _SINK_
3 | -> _SINK_
4 | -> _SINK_
5 | -> _SINK_
6 |
--------------------------------------------------------------------------------
/soot-infoflow-android/iccta_testdata_ic3_results/de.ecspride_1.txt:
--------------------------------------------------------------------------------
1 | name: "de.ecspride"
2 | version: 1
3 | used_permissions: "android.permission.READ_PHONE_STATE"
4 | components {
5 | name: "de.ecspride.IntentSink2"
6 | kind: ACTIVITY
7 | exported: true
8 | intent_filters {
9 | attributes {
10 | kind: ACTION
11 | value: "android.intent.action.MAIN"
12 | }
13 | attributes {
14 | kind: CATEGORY
15 | value: "android.intent.category.LAUNCHER"
16 | }
17 | }
18 | }
19 | analysis_start: 1470642636
20 | analysis_end: 1470642638
21 |
--------------------------------------------------------------------------------
/soot-infoflow-android/iccta_testdata_ic3_results/edu.mit.shared_preferences_1.txt:
--------------------------------------------------------------------------------
1 | name: "edu.mit.shared_preferences"
2 | version: 1
3 | used_permissions: "android.permission.READ_PHONE_STATE"
4 | components {
5 | name: "edu.mit.shared_preferences.MainActivity"
6 | kind: ACTIVITY
7 | exported: true
8 | intent_filters {
9 | attributes {
10 | kind: ACTION
11 | value: "android.intent.action.MAIN"
12 | }
13 | attributes {
14 | kind: CATEGORY
15 | value: "android.intent.category.LAUNCHER"
16 | }
17 | }
18 | }
19 | components {
20 | name: "edu.mit.shared_preferences.AnotherActivity"
21 | kind: ACTIVITY
22 | exported: true
23 | intent_filters {
24 | attributes {
25 | kind: ACTION
26 | value: "edu.mit.DroidBench"
27 | }
28 | }
29 | }
30 | analysis_start: 1470642653
31 | analysis_end: 1470642655
32 |
--------------------------------------------------------------------------------
/soot-infoflow-android/iccta_testdata_ic3_results/edu.mit.to_components_share_memory_1.txt:
--------------------------------------------------------------------------------
1 | name: "edu.mit.to_components_share_memory"
2 | version: 1
3 | used_permissions: "android.permission.READ_PHONE_STATE"
4 | components {
5 | name: "edu.mit.to_components_share_memory.MainActivity"
6 | kind: ACTIVITY
7 | exported: true
8 | intent_filters {
9 | attributes {
10 | kind: ACTION
11 | value: "android.intent.action.MAIN"
12 | }
13 | attributes {
14 | kind: CATEGORY
15 | value: "android.intent.category.LAUNCHER"
16 | }
17 | }
18 | }
19 | components {
20 | name: "edu.mit.to_components_share_memory.AnotherActivity"
21 | kind: ACTIVITY
22 | exported: true
23 | intent_filters {
24 | attributes {
25 | kind: ACTION
26 | value: "edu.mit.DroidBench"
27 | }
28 | }
29 | }
30 | analysis_start: 1470642656
31 | analysis_end: 1470642658
32 |
--------------------------------------------------------------------------------
/soot-infoflow-android/insecureBank/InsecureBank.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/insecureBank/InsecureBank.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/lib/junit.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/lib/junit.jar
--------------------------------------------------------------------------------
/soot-infoflow-android/lib/org.hamcrest.core_1.3.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/lib/org.hamcrest.core_1.3.0.jar
--------------------------------------------------------------------------------
/soot-infoflow-android/lib/protobuf-java-2.5.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/lib/protobuf-java-2.5.0.jar
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/axml/AXmlTypes.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.axml;
2 |
3 | /**
4 | * Class containing type constants for Android XML files
5 | *
6 | * @author Steven Arzt
7 | *
8 | */
9 | public class AXmlTypes {
10 |
11 | public static final int TYPE_INT_BOOLEAN = 0x00000012;
12 | public static final int TYPE_STRING = 0x00000003;
13 | public static final int TYPE_FIRST_INT = 0x00000010;
14 | public static final int TYPE_INT_HEX = 0x00000011;
15 | public static final int TYPE_REFERENCE = 0x00000001;
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/callbacks/filters/AbstractCallbackFilter.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.callbacks.filters;
2 |
3 | import soot.jimple.infoflow.android.callbacks.ComponentReachableMethods;
4 |
5 | /**
6 | * Abstract base class for callback filters
7 | *
8 | * @author Steven Arzt
9 | *
10 | */
11 | public abstract class AbstractCallbackFilter implements ICallbackFilter {
12 |
13 | protected ComponentReachableMethods reachableMethods = null;
14 |
15 | @Override
16 | public void setReachableMethods(ComponentReachableMethods rm) {
17 | this.reachableMethods = rm;
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/iccta/IccLinkProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.iccta;
2 |
3 | import java.util.List;
4 |
5 | public interface IccLinkProvider
6 | {
7 | public List getIccLinks();
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/iccta/MessageHandler.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.iccta;
2 |
3 | import java.util.Collection;
4 |
5 | import soot.Scene;
6 | import soot.SootClass;
7 |
8 | public final class MessageHandler {
9 |
10 | private MessageHandler() {
11 | }
12 |
13 | public static Collection getAllHandlers() {
14 | SootClass handler = Scene.v().getSootClass("android.os.Handler");
15 | Collection h = Scene.v().getOrMakeFastHierarchy().getSubclassesOf(handler);
16 |
17 | return h;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/manifest/ComponentType.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.manifest;
2 |
3 | /**
4 | * Enumeration containing the various component types supported in Android
5 | */
6 | public enum ComponentType {
7 | Activity, Service, ContentProvider, BroadcastReceiver
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/manifest/IActivity.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.manifest;
2 |
3 | import java.util.List;
4 |
5 | import soot.jimple.infoflow.android.entryPointCreators.AndroidEntryPointConstants;
6 |
7 | /**
8 | * An activity inside an Android app
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public interface IActivity extends IAndroidComponent {
14 |
15 | @Override
16 | default public List getLifecycleMethods() {
17 | return AndroidEntryPointConstants.getActivityLifecycleMethods();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/manifest/IBroadcastReceiver.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.manifest;
2 |
3 | import java.util.List;
4 |
5 | import soot.jimple.infoflow.android.entryPointCreators.AndroidEntryPointConstants;
6 |
7 | /**
8 | * Interface for broadcast receivers inside an Android app
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public interface IBroadcastReceiver extends IAndroidComponent {
14 |
15 | @Override
16 | default public List getLifecycleMethods() {
17 | return AndroidEntryPointConstants.getBroadcastLifecycleMethods();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/manifest/IContentProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.manifest;
2 |
3 | import java.util.List;
4 |
5 | import soot.jimple.infoflow.android.entryPointCreators.AndroidEntryPointConstants;
6 |
7 | /**
8 | * Interface for content providers inside an Android app
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public interface IContentProvider extends IAndroidComponent {
14 |
15 | @Override
16 | default public List getLifecycleMethods() {
17 | return AndroidEntryPointConstants.getContentproviderLifecycleMethods();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/manifest/IService.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.manifest;
2 |
3 | import java.util.List;
4 |
5 | import soot.jimple.infoflow.android.entryPointCreators.AndroidEntryPointConstants;
6 |
7 | /**
8 | * Interface for services inside an Android app
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public interface IService extends IAndroidComponent {
14 |
15 | @Override
16 | default public List getLifecycleMethods() {
17 | return AndroidEntryPointConstants.getServiceLifecycleMethods();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/manifest/binary/BinaryManifestActivity.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.manifest.binary;
2 |
3 | import soot.jimple.infoflow.android.axml.AXmlNode;
4 | import soot.jimple.infoflow.android.manifest.BaseProcessManifest;
5 | import soot.jimple.infoflow.android.manifest.IActivity;
6 |
7 | /**
8 | * An activity loaded from a binary Android manifest
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public class BinaryManifestActivity extends AbstractBinaryAndroidComponent implements IActivity {
14 |
15 | /**
16 | * Creates a new instance of the {@link BinaryManifestActivity} class
17 | *
18 | * @param node The binary XML node
19 | * @param manifest The manifest
20 | */
21 | public BinaryManifestActivity(AXmlNode node, BaseProcessManifest, ?, ?, ?> manifest) {
22 | super(node, manifest);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/manifest/binary/BinaryManifestContentProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.manifest.binary;
2 |
3 | import soot.jimple.infoflow.android.axml.AXmlNode;
4 | import soot.jimple.infoflow.android.manifest.BaseProcessManifest;
5 | import soot.jimple.infoflow.android.manifest.IContentProvider;
6 |
7 | /**
8 | * A content provider loaded from a binary Android manifest
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public class BinaryManifestContentProvider extends AbstractBinaryAndroidComponent implements IContentProvider {
14 |
15 | public BinaryManifestContentProvider(AXmlNode node, BaseProcessManifest, ?, ?, ?> manifest) {
16 | super(node, manifest);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/manifest/binary/BinaryManifestService.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.manifest.binary;
2 |
3 | import soot.jimple.infoflow.android.axml.AXmlNode;
4 | import soot.jimple.infoflow.android.manifest.BaseProcessManifest;
5 | import soot.jimple.infoflow.android.manifest.IService;
6 |
7 | /**
8 | * A service loaded from a binary Android manifest
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public class BinaryManifestService extends AbstractBinaryAndroidComponent implements IService {
14 |
15 | /**
16 | * Creates a new instance of the {@link BinaryManifestService} class
17 | *
18 | * @param node The binary XML node
19 | * @param manifest The manifest
20 | */
21 | public BinaryManifestService(AXmlNode node, BaseProcessManifest, ?, ?, ?> manifest) {
22 | super(node, manifest);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/results/xml/XmlConstants.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.results.xml;
2 |
3 | /**
4 | * Class containing the tag and attribute names for serializing data flow
5 | * results to XML.
6 | *
7 | * @author Steven Arzt
8 | *
9 | */
10 | class XmlConstants {
11 |
12 | class Tags {
13 |
14 | // presently not used
15 |
16 | }
17 |
18 | class Attributes {
19 |
20 | public static final String systemCategory = "SystemCategory";
21 | public static final String userCategory = "UserCategory";
22 |
23 | }
24 |
25 | class Values {
26 |
27 | public static final String TRUE = "true";
28 | public static final String FALSE = "false";
29 |
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/soot-infoflow-android/src/soot/jimple/infoflow/android/source/parsers/xml/ResourceUtils.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.source.parsers.xml;
2 |
3 | import java.io.IOException;
4 | import java.io.InputStream;
5 |
6 | public class ResourceUtils {
7 |
8 | /**
9 | * Returns an input stream of a specified resource files, which is contained within the
10 | * JAR. This method does throw an exception in case the resource file was not found.
11 | * The caller responsible for closing the stream.
12 | * @param filename the resource file name
13 | * @return the input stream
14 | * @throws IOException
15 | */
16 | public static InputStream getResourceStream(String filename) throws IOException {
17 | return soot.jimple.infoflow.util.ResourceUtils.getResourceStream(ResourceUtils.class, filename);
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/BaseJUnitTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test;
2 |
3 | import java.io.File;
4 |
5 | /**
6 | * Abstract base class for JUnit tests in the Android plugin
7 | *
8 | * @author Steven Arzt
9 | *
10 | */
11 | public abstract class BaseJUnitTests {
12 |
13 | /**
14 | * Gets the root in which the FlowDroid Android project is located
15 | *
16 | * @return The directory in which the FlowDroid Android project is located
17 | */
18 | public static File getInfoflowAndroidRoot() {
19 | File testRoot = new File(".");
20 | if (!new File(testRoot, "src").exists())
21 | testRoot = new File(testRoot, "soot-infoflow-android");
22 | if (!new File(testRoot, "src").exists())
23 | throw new RuntimeException(String.format("Test root not found in %s", testRoot.getAbsolutePath()));
24 | return testRoot;
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/AliasingTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class AliasingTest extends soot.jimple.infoflow.android.test.droidBench.AliasingTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/AndroidSpecificTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class AndroidSpecificTest extends soot.jimple.infoflow.android.test.droidBench.AndroidSpecificTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/ArrayAndListTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class ArrayAndListTest extends soot.jimple.infoflow.android.test.droidBench.ArrayAndListTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/CallbackTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class CallbackTest extends soot.jimple.infoflow.android.test.droidBench.CallbackTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/EmulatorDetectionTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class EmulatorDetectionTest extends soot.jimple.infoflow.android.test.droidBench.EmulatorDetectionTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/FieldAndObjectSensitivityTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class FieldAndObjectSensitivityTest extends soot.jimple.infoflow.android.test.droidBench.FieldAndObjectSensitivityTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/GeneralJavaTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class GeneralJavaTest extends soot.jimple.infoflow.android.test.droidBench.GeneralJavaTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/ImplicitFlowTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class ImplicitFlowTest extends soot.jimple.infoflow.android.test.droidBench.ImplicitFlowTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/InterAppCommunicationTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class InterAppCommunicationTest extends soot.jimple.infoflow.android.test.droidBench.InterAppCommunicationTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/InterComponentCommunicationTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class InterComponentCommunicationTest extends soot.jimple.infoflow.android.test.droidBench.InterComponentCommunicationTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/LifecycleTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class LifecycleTest extends soot.jimple.infoflow.android.test.droidBench.LifecycleTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/ReflectionICCTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | import org.junit.Ignore;
4 |
5 | @Ignore("Buggy, call graph problem")
6 | public class ReflectionICCTest extends soot.jimple.infoflow.android.test.droidBench.ReflectionICCTest {
7 | @Override
8 | protected TestResultMode getTestResultMode() {
9 | return TestResultMode.FLOWDROID_BACKWARDS;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/ReflectionTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class ReflectionTest extends soot.jimple.infoflow.android.test.droidBench.ReflectionTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/backward/ThreadingTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.backward;
2 |
3 | public class ThreadingTest extends soot.jimple.infoflow.android.test.droidBench.ThreadingTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_BACKWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/AliasingTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class AliasingTest extends soot.jimple.infoflow.android.test.droidBench.AliasingTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/AndroidSpecificTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class AndroidSpecificTest extends soot.jimple.infoflow.android.test.droidBench.AndroidSpecificTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/ArrayAndListTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class ArrayAndListTest extends soot.jimple.infoflow.android.test.droidBench.ArrayAndListTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/CallbackTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class CallbackTest extends soot.jimple.infoflow.android.test.droidBench.CallbackTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/EmulatorDetectionTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class EmulatorDetectionTest extends soot.jimple.infoflow.android.test.droidBench.EmulatorDetectionTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/FieldAndObjectSensitivityTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class FieldAndObjectSensitivityTest extends soot.jimple.infoflow.android.test.droidBench.FieldAndObjectSensitivityTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/GeneralJavaTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class GeneralJavaTest extends soot.jimple.infoflow.android.test.droidBench.GeneralJavaTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/ImplicitFlowTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class ImplicitFlowTest extends soot.jimple.infoflow.android.test.droidBench.ImplicitFlowTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/InterAppCommunicationTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class InterAppCommunicationTest extends soot.jimple.infoflow.android.test.droidBench.InterAppCommunicationTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/InterComponentCommunicationTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class InterComponentCommunicationTest extends soot.jimple.infoflow.android.test.droidBench.InterComponentCommunicationTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/LifecycleTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class LifecycleTest extends soot.jimple.infoflow.android.test.droidBench.LifecycleTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/ReflectionICCTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | import org.junit.Ignore;
4 |
5 | @Ignore("Buggy, call graph problem")
6 | public class ReflectionICCTest extends soot.jimple.infoflow.android.test.droidBench.ReflectionICCTest {
7 | @Override
8 | protected TestResultMode getTestResultMode() {
9 | return TestResultMode.FLOWDROID_FORWARDS;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/ReflectionTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class ReflectionTest extends soot.jimple.infoflow.android.test.droidBench.ReflectionTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/test/soot/jimple/infoflow/android/test/droidBench/forward/ThreadingTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.android.test.droidBench.forward;
2 |
3 | public class ThreadingTest extends soot.jimple.infoflow.android.test.droidBench.ThreadingTest {
4 | @Override
5 | protected TestResultMode getTestResultMode() {
6 | return TestResultMode.FLOWDROID_FORWARDS;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/9458cfb51c90130938abcef7173c3f6d44a02720.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/9458cfb51c90130938abcef7173c3f6d44a02720.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/FlowDroidAliasActivity.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/FlowDroidAliasActivity.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/ReturnParameterTest.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/ReturnParameterTest.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink1.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink1.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink2.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink2.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink3.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink3.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink4.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink4.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink5.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink5.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink6.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testAPKs/SourceSinkDefinitions/SourceToSink6.apk
--------------------------------------------------------------------------------
/soot-infoflow-android/testXmlParser/completeOld.txt:
--------------------------------------------------------------------------------
1 | -> _SOURCE_
2 | -> _SINK_
3 | -> _SINK_
--------------------------------------------------------------------------------
/soot-infoflow-android/testXmlParser/empty.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testXmlParser/empty.txt
--------------------------------------------------------------------------------
/soot-infoflow-android/testXmlParser/empty.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-android/testXmlParser/empty.xml
--------------------------------------------------------------------------------
/soot-infoflow-android/testXmlParser/invalidReturnCallType.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/soot-infoflow-android/testXmlParser/missingParts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-android/testXmlParser/missingPartsOld.txt:
--------------------------------------------------------------------------------
1 | -> _SINK_
--------------------------------------------------------------------------------
/soot-infoflow-android/testXmlParser/notValid.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/soot-infoflow-android/testXmlParser/returnCallType.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 | /target/
3 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | soot-infoflow-cmd
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javanature
21 | org.eclipse.m2e.core.maven2Nature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 | encoding/src=UTF-8
4 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/build/.gitignore:
--------------------------------------------------------------------------------
1 | /classes/
2 | /testclasses/
3 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/sootOutput/de.fraunhofer.sit.deserializationvuln.R$drawable.jimple:
--------------------------------------------------------------------------------
1 | public final class de.fraunhofer.sit.deserializationvuln.R$drawable extends java.lang.Object
2 | {
3 | public static final int ic_launcher_background;
4 | public static final int ic_launcher_foreground;
5 |
6 | public void ()
7 | {
8 | de.fraunhofer.sit.deserializationvuln.R$drawable $r0;
9 |
10 | $r0 := @this: de.fraunhofer.sit.deserializationvuln.R$drawable;
11 |
12 | specialinvoke $r0.()>();
13 |
14 | return;
15 | }
16 |
17 | public static void ()
18 | {
19 | = 2130903042;
20 |
21 | = 2130903041;
22 |
23 | return;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/sootOutput/de.fraunhofer.sit.deserializationvuln.R$layout.jimple:
--------------------------------------------------------------------------------
1 | public final class de.fraunhofer.sit.deserializationvuln.R$layout extends java.lang.Object
2 | {
3 | public static final int activity_main;
4 |
5 | public void ()
6 | {
7 | de.fraunhofer.sit.deserializationvuln.R$layout $r0;
8 |
9 | $r0 := @this: de.fraunhofer.sit.deserializationvuln.R$layout;
10 |
11 | specialinvoke $r0.()>();
12 |
13 | return;
14 | }
15 |
16 | public static void ()
17 | {
18 | = 2131034112;
19 |
20 | return;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/sootOutput/de.fraunhofer.sit.deserializationvuln.R$mipmap.jimple:
--------------------------------------------------------------------------------
1 | public final class de.fraunhofer.sit.deserializationvuln.R$mipmap extends java.lang.Object
2 | {
3 | public static final int ic_launcher;
4 | public static final int ic_launcher_round;
5 |
6 | public void ()
7 | {
8 | de.fraunhofer.sit.deserializationvuln.R$mipmap $r0;
9 |
10 | $r0 := @this: de.fraunhofer.sit.deserializationvuln.R$mipmap;
11 |
12 | specialinvoke $r0.()>();
13 |
14 | return;
15 | }
16 |
17 | public static void ()
18 | {
19 | = 2131099649;
20 |
21 | = 2131099648;
22 |
23 | return;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/sootOutput/de.fraunhofer.sit.deserializationvuln.R$string.jimple:
--------------------------------------------------------------------------------
1 | public final class de.fraunhofer.sit.deserializationvuln.R$string extends java.lang.Object
2 | {
3 | public static final int app_name;
4 |
5 | public void ()
6 | {
7 | de.fraunhofer.sit.deserializationvuln.R$string $r0;
8 |
9 | $r0 := @this: de.fraunhofer.sit.deserializationvuln.R$string;
10 |
11 | specialinvoke $r0.()>();
12 |
13 | return;
14 | }
15 |
16 | public static void ()
17 | {
18 | = 2131165184;
19 |
20 | return;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/sootOutput/de.fraunhofer.sit.deserializationvuln.R$style.jimple:
--------------------------------------------------------------------------------
1 | public final class de.fraunhofer.sit.deserializationvuln.R$style extends java.lang.Object
2 | {
3 | public static final int AppTheme;
4 |
5 | public void ()
6 | {
7 | de.fraunhofer.sit.deserializationvuln.R$style $r0;
8 |
9 | $r0 := @this: de.fraunhofer.sit.deserializationvuln.R$style;
10 |
11 | specialinvoke $r0.()>();
12 |
13 | return;
14 | }
15 |
16 | public static void ()
17 | {
18 | = 2131230720;
19 |
20 | return;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/sootOutput/de.fraunhofer.sit.deserializationvuln.R.jimple:
--------------------------------------------------------------------------------
1 | public final class de.fraunhofer.sit.deserializationvuln.R extends java.lang.Object
2 | {
3 |
4 | public void ()
5 | {
6 | de.fraunhofer.sit.deserializationvuln.R $r0;
7 |
8 | $r0 := @this: de.fraunhofer.sit.deserializationvuln.R;
9 |
10 | specialinvoke $r0.()>();
11 |
12 | return;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/soot-infoflow-cmd/src/soot/jimple/infoflow/cmd/AbortAnalysisException.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.cmd;
2 |
3 | /**
4 | * Exception that is thrown when a method wants to abort the data flow analysis
5 | *
6 | * @author Steven Arzt
7 | *
8 | */
9 | public class AbortAnalysisException extends RuntimeException {
10 |
11 | private static final long serialVersionUID = 1680221667425749422L;
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 | /build/
3 | /sootOutput/
--------------------------------------------------------------------------------
/soot-infoflow-integration/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | soot-infoflow-integration
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javanature
21 | org.eclipse.m2e.core.maven2Nature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 | encoding/res=UTF-8
4 | encoding/test=UTF-8
5 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/SourcesAndSinks_GeoLocationNetworkOnly.txt:
--------------------------------------------------------------------------------
1 | (java.lang.String)> -> _SINK_
2 | -> _SOURCE_
3 | -> _SOURCE_
--------------------------------------------------------------------------------
/soot-infoflow-integration/test/soot/jimple/infoflow/collections/test/Helper.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.test;
2 |
3 | public class Helper {
4 | public static String source() {
5 | return "secret";
6 | }
7 |
8 | public static void sink(Object str) {
9 | System.out.println(str);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/test/soot/jimple/infoflow/collections/test/ListAddAllItselfTestCode.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.test;
2 |
3 | import soot.jimple.infoflow.collections.test.junit.FlowDroidTest;
4 |
5 | import java.util.ArrayList;
6 |
7 | import static soot.jimple.infoflow.collections.test.Helper.sink;
8 | import static soot.jimple.infoflow.collections.test.Helper.source;
9 |
10 | public class ListAddAllItselfTestCode {
11 | @FlowDroidTest(expected = 1)
12 | public void testListAllAllItselfFiniteLoop1() {
13 | ArrayList lst = new ArrayList<>();
14 | lst.add(source());
15 | for (int i = 0; i < 3; i++) {
16 | lst.addAll(lst);
17 | }
18 | sink(lst.get(0));
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/test/soot/jimple/infoflow/collections/test/junit/FlowDroidTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.test.junit;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Retention(RetentionPolicy.RUNTIME)
9 | @Target(ElementType.METHOD)
10 | public @interface FlowDroidTest {
11 | int expected();
12 | }
13 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/test/soot/jimple/infoflow/integration/test/junit/BackwardAndroidRegressionTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.integration.test.junit;
2 |
3 | import soot.jimple.infoflow.InfoflowConfiguration;
4 |
5 | public class BackwardAndroidRegressionTests extends AndroidRegressionTests {
6 | @Override
7 | protected void setConfiguration(InfoflowConfiguration config) {
8 | config.setDataFlowDirection(InfoflowConfiguration.DataFlowDirection.Backwards);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/test/soot/jimple/infoflow/integration/test/junit/river/EasyTaintWrapperRiverWithoutPathsTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.integration.test.junit.river;
2 |
3 | import soot.jimple.infoflow.InfoflowConfiguration;
4 |
5 | /**
6 | * Tests the RiverTestCode with the EasyTaintWrapper and no path reconstruction
7 | *
8 | * @author Tim Lange
9 | */
10 | public class EasyTaintWrapperRiverWithoutPathsTests extends EasyTaintWrapperRiverTests {
11 | @Override
12 | protected void setConfiguration(InfoflowConfiguration config) {
13 | super.setConfiguration(config);
14 | config.getPathConfiguration().setPathReconstructionMode(InfoflowConfiguration.PathReconstructionMode.NoPaths);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/test/soot/jimple/infoflow/integration/test/junit/river/MultipleSinksWithoutPathsTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.integration.test.junit.river;
2 |
3 | import soot.jimple.infoflow.InfoflowConfiguration;
4 |
5 | /**
6 | * Tests the merging and separating of SourceSinkDefinitions referecing the same statement or method
7 | * with path reconstruction disabled
8 | */
9 | public class MultipleSinksWithoutPathsTest extends MultipleSinkTests {
10 | @Override
11 | protected void setConfiguration(InfoflowConfiguration config) {
12 | super.setConfiguration(config);
13 | config.getPathConfiguration().setPathReconstructionMode(InfoflowConfiguration.PathReconstructionMode.NoPaths);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/test/soot/jimple/infoflow/integration/test/junit/river/RiverBaseJUnitTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.integration.test.junit.river;
2 |
3 | import soot.jimple.infoflow.InfoflowConfiguration;
4 |
5 | public abstract class RiverBaseJUnitTests extends BaseJUnitTests {
6 |
7 | @Override
8 | protected void setConfiguration(InfoflowConfiguration config) {
9 | config.setAdditionalFlowsEnabled(true);
10 | config.getPathConfiguration().setPathReconstructionMode(InfoflowConfiguration.PathReconstructionMode.Fast);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/test/soot/jimple/infoflow/integration/test/junit/river/SummaryTaintWrapperRiverWithoutPathsTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.integration.test.junit.river;
2 |
3 | import soot.jimple.infoflow.InfoflowConfiguration;
4 |
5 | /**
6 | * Tests the RiverTestCode with the SummaryTaintWrapper and no path reconstruction
7 | *
8 | * @author Tim Lange
9 | */
10 | public class SummaryTaintWrapperRiverWithoutPathsTests extends SummaryTaintWrapperRiverTests {
11 | @Override
12 | protected void setConfiguration(InfoflowConfiguration config) {
13 | super.setConfiguration(config);
14 | config.getPathConfiguration().setPathReconstructionMode(InfoflowConfiguration.PathReconstructionMode.NoPaths);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/Collections/AppWithConstantFields.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/Collections/AppWithConstantFields.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/Collections/StringResourcesTest.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/Collections/StringResourcesTest.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/ConditionalFlowTest.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/ConditionalFlowTest.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/CoordinatesToURLParameter.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/CoordinatesToURLParameter.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/ExternalCacheDirTest.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/ExternalCacheDirTest.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/ExternalFileWithNativeName.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/ExternalFileWithNativeName.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/KotlinCollectionApp.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/KotlinCollectionApp.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/MapClearTest.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/MapClearTest.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/PrintWriterTest.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/PrintWriterTest.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/ThreadRunnable.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/ThreadRunnable.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/ThreadRunnableIndirect.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/ThreadRunnableIndirect.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/TypeHierarchyTest.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/TypeHierarchyTest.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/XMLCallbackAPI33.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/XMLCallbackAPI33.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/flowsensitiveOverwrite.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/flowsensitiveOverwrite.apk
--------------------------------------------------------------------------------
/soot-infoflow-integration/testAPKs/identityOverObjectInit.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/secure-software-engineering/FlowDroid/70aa5b3f938726a8dd6685eae09c84196432c6d6/soot-infoflow-integration/testAPKs/identityOverObjectInit.apk
--------------------------------------------------------------------------------
/soot-infoflow-summaries/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 | /testBin/
3 | /target
4 | /sootOutput/
--------------------------------------------------------------------------------
/soot-infoflow-summaries/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | soot-infoflow-summaries
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javanature
21 | org.eclipse.m2e.core.maven2Nature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 | encoding/schema=UTF-8
4 | encoding/src=UTF-8
5 | encoding/summariesManual=UTF-8
6 | encoding/test=UTF-8
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/build/.gitignore:
--------------------------------------------------------------------------------
1 | /classes/
2 | /testclasses/
3 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/src/soot/jimple/infoflow/methodSummary/data/provider/ConcurrentMergingSummaryProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.methodSummary.data.provider;
2 |
3 | import soot.jimple.infoflow.methodSummary.data.summary.ClassSummaries;
4 | import soot.jimple.infoflow.methodSummary.data.summary.ConcurrentClassSummaries;
5 |
6 | /**
7 | * Concurrent version of the {@link MergingSummaryProvider} class
8 | *
9 | * @author Steven Arzt
10 | *
11 | */
12 | public class ConcurrentMergingSummaryProvider extends MergingSummaryProvider {
13 |
14 | @Override
15 | protected ClassSummaries createClassSummaries() {
16 | return new ConcurrentClassSummaries();
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/src/soot/jimple/infoflow/methodSummary/data/sourceSink/InvalidFlowSpecificationException.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.methodSummary.data.sourceSink;
2 |
3 | /**
4 | * Exception that is thrown when a source or sink specification inside a summary
5 | * flow is invalid
6 | *
7 | * @author Steven Arzt
8 | *
9 | */
10 | public class InvalidFlowSpecificationException extends RuntimeException {
11 |
12 | private static final long serialVersionUID = -6548286243034212560L;
13 |
14 | private final AbstractFlowSinkSource sinkSource;
15 |
16 | public InvalidFlowSpecificationException(String message, AbstractFlowSinkSource sinkSource) {
17 | super(message);
18 | this.sinkSource = sinkSource;
19 | }
20 |
21 | public AbstractFlowSinkSource getSinkSource() {
22 | return sinkSource;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/src/soot/jimple/infoflow/methodSummary/data/summary/ConcurrentClassSummaries.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.methodSummary.data.summary;
2 |
3 | import java.util.Map;
4 | import java.util.concurrent.ConcurrentHashMap;
5 |
6 | /**
7 | * Concurrent version of the {@link ClassSummaries} class
8 | *
9 | * @author Steven Arzt
10 | *
11 | */
12 | public class ConcurrentClassSummaries extends ClassSummaries {
13 |
14 | @Override
15 | protected Map createSummariesMap() {
16 | return new ConcurrentHashMap<>();
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/src/soot/jimple/infoflow/methodSummary/data/summary/ImplicitLocation.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.methodSummary.data.summary;
2 |
3 | public enum ImplicitLocation {
4 | First,
5 | Last,
6 | Next
7 | }
8 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/src/soot/jimple/infoflow/methodSummary/data/summary/IsAliasType.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.methodSummary.data.summary;
2 |
3 | public enum IsAliasType {
4 | /* Always valid in alias flow */
5 | TRUE,
6 | /* Always not valid in alias flow */
7 | FALSE,
8 | /* Only valid if the incoming abstraction has a context */
9 | WITH_CONTEXT
10 | }
11 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/src/soot/jimple/infoflow/methodSummary/generator/ISummaryInfoflow.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.methodSummary.generator;
2 |
3 | import soot.jimple.infoflow.IInfoflow;
4 | import soot.jimple.infoflow.InfoflowManager;
5 |
6 | public interface ISummaryInfoflow extends IInfoflow {
7 | InfoflowManager getManager();
8 | }
9 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/src/soot/jimple/infoflow/methodSummary/util/AliasUtils.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.methodSummary.util;
2 |
3 | import soot.RefType;
4 | import soot.Type;
5 | import soot.jimple.infoflow.data.AccessPath;
6 |
7 | /**
8 | * Utility class for handling aliasing-related checks
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public class AliasUtils {
14 |
15 | /**
16 | * Checks whether the given access path can potentially have aliases
17 | *
18 | * @param ap The access path to check
19 | * @return True if the given access path can potentially have aliases, otherwise
20 | * false
21 | */
22 | public static boolean canAccessPathHaveAliases(AccessPath ap) {
23 | Type lastType = ap.getLastFieldType();
24 | return lastType instanceof RefType && !((RefType) lastType).getSootClass().getName().equals("java.lang.String");
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/src/soot/jimple/infoflow/methodSummary/xml/SummaryXMLException.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.methodSummary.xml;
2 |
3 | public class SummaryXMLException extends Exception {
4 |
5 | /**
6 | *
7 | */
8 | private static final long serialVersionUID = 1L;
9 |
10 | public SummaryXMLException() {
11 | super();
12 | }
13 |
14 | public SummaryXMLException(String message) {
15 | super(message);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/System.Object.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.content.ClipData.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.content.pm.ApplicationInfo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.content.pm.PackageItemInfo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.util.MutableBoolean.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.util.MutableByte.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.util.MutableChar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.util.MutableDouble.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.util.MutableFloat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.util.MutableInt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.util.MutableLong.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.util.MutableShort.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/android.widget.Button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/com.esotericsoftware.kryo.io.Output.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/com.google.common.collect.HashBasedTable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/com.google.common.collect.HashMultimap.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/com.google.common.collect.Table$Cell.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/com.google.common.io.BaseEncoding.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/com.mashape.unirest.request.GetRequest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/cz.msebera.android.httpclient.util.EntityUtils.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/jakarta.servlet.http.HttpServletResponse.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.io.FileInputStream.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.io.FileWriter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.io.FilterInputStream.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.lang.Exception.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.lang.NullPointerException.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.lang.Object.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.lang.RuntimeException.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.net.HttpURLConnection.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.net.URLDecoder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.net.URLEncoder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.security.SecureRandom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.util.Enumeration.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.util.HashMap.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.util.HashSet.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.util.Iterator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.util.Set.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.util.Spliterator$OfPrimitive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.util.concurrent.Future.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/java.util.function.UnaryOperator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.ejb.EnterpriseBean.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.ejb.EntityBean.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.ejb.MessageDrivenBean.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.ejb.SessionBean.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.naming.directory.InitialDirContext.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.net.ssl.HttpsURLConnection.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.GenericServlet.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.ServletConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.ServletInputStream.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.ServletOutputStream.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.ServletRequestWrapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.ServletResponseWrapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.http.HttpServlet.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.http.HttpServletRequest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.http.HttpServletRequestWrapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/javax.servlet.http.HttpServletResponseWrapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/kotlin.collections.CollectionsKt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/okio.Base64.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.commons.codec.BinaryDecoder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.commons.codec.BinaryEncoder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.commons.codec.Decoder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.commons.codec.Encoder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.commons.codec.StringDecoder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.commons.codec.StringEncoder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.commons.mail.MultiPartEmail.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.commons.mail.SimpleEmail.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.RequestLine.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.auth.KerberosCredentials.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.auth.NTCredentials.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.auth.UsernamePasswordCredentials.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.client.methods.AbstractExecutionAwareRequest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.client.methods.CloseableHttpResponse.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.entity.AbstractHttpEntity.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.entity.mime.content.AbstractContentBody.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.entity.mime.content.ByteArrayBody.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.entity.mime.content.FileBody.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.entity.mime.content.InputStreamBody.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.entity.mime.content.StringBody.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.AbstractHttpClient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.AutoRetryHttpClient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.BasicCredentialsProvider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.CloseableHttpClient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.ContentEncodingHttpClient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.DecompressingHttpClient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.DefaultHttpClient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.SystemDefaultCredentialsProvider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.impl.client.SystemDefaultHttpClient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.message.AbstractHttpMessage.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.message.BasicHttpEntityEnclosingRequest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.apache.http.message.BasicHttpRequest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.joda.time.DateTimeZone.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.joda.time.tz.ZoneInfoProvider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.w3c.dom.Document.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.w3c.dom.Element.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.w3c.dom.Node.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/summariesManual/org.w3c.dom.NodeList.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/.gitignore:
--------------------------------------------------------------------------------
1 | /ListTestCode.java
2 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/ApiInternalClass.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public class ApiInternalClass {
4 |
5 |
6 | public static Object getOStatic(Data d){
7 | return d.getData();
8 |
9 | }
10 |
11 | public Object getO(Data d){
12 | return d.getData();
13 | }
14 |
15 | public Data returnData(Data d){
16 | Data t = new Data();
17 | t.objectField = d.objectField;
18 | t.stringField = d.stringField;
19 | t.value = d.value;
20 | return t;
21 | }
22 | public void write(Data d1,Data d2){
23 | d2.setData(d1.getData());
24 |
25 | }
26 | public void write(Object o1,Data d2){
27 | d2.setData(o1);
28 |
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/Callbacks.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public class Callbacks {
4 |
5 | public interface MyCallbacks {
6 |
7 | public String transform(String in);
8 | public void transformObject(Data o);
9 |
10 | }
11 |
12 | public String paraToCallbackToReturn(String data, MyCallbacks cbs) {
13 | String foo = cbs.transform(data);
14 | return foo;
15 | }
16 |
17 | private MyCallbacks cbs = null;
18 |
19 | public void setCallbacks(MyCallbacks cbs) {
20 | this.cbs = cbs;
21 | }
22 |
23 | public String fieldCallbackToReturn(String data) {
24 | String foo = cbs.transform(data);
25 | return foo;
26 | }
27 |
28 | public Data fieldCallbackToField(Data o) {
29 | cbs.transformObject(o);
30 | return o;
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/ContextSensitivity.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 |
4 | /**
5 | * Test targets for making sure that we don't loose context sensitivity in our
6 | * approach, especially during path reconstruction
7 | *
8 | * @author Steven Arzt
9 | *
10 | */
11 | public class ContextSensitivity {
12 |
13 | private String x = null, y = null, z = null;
14 |
15 | void contextSensitivity1(Data d, String str1, String str2) {
16 | d.stringField = id(str1);
17 | d.stringField2 = id(str2);
18 | }
19 |
20 | String recursionTest1(String str) {
21 | System.out.println("run");
22 | z = y;
23 | y = x;
24 | x = str;
25 | if (z == null)
26 | return recursionTest1(y);
27 | return z;
28 | }
29 |
30 | private String id(String s) {
31 | return s;
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/Data2.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public class Data2 {
4 |
5 | public Object c;
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/IGapClass.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public interface IGapClass {
4 |
5 | public String callTheGap(String in);
6 | public void fillDataString(String in, Data d);
7 | public Data dataThroughGap(Data d);
8 |
9 | public void storeString(String in);
10 | public String retrieveString();
11 |
12 | public void storeData(Data in);
13 | public Data retrieveData();
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/IUserCodeClass.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public interface IUserCodeClass {
4 |
5 | public String callTheGap(String in);
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/InheritanceTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public class InheritanceTests {
4 |
5 | private abstract class Base {
6 |
7 | public abstract String doIt(int i, String s);
8 |
9 | }
10 |
11 | private class Concrete extends Base {
12 |
13 | @Override
14 | public String doIt(int i, String s) {
15 | if (i == 0)
16 | return s;
17 | return doIt(i - 1, s);
18 | }
19 |
20 | }
21 |
22 | public String abstractClassTest1(String in) {
23 | Base b = new Concrete();
24 | return b.doIt(10, in);
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/Pair.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public class Pair {
4 |
5 | private Object o1;
6 | private Object o2;
7 |
8 | public Pair(Object o1, Object o2) {
9 | this.o1 = o1;
10 | this.o2 = o2;
11 | }
12 |
13 | public Object getO1() {
14 | return this.o1;
15 | }
16 |
17 | public void setComplex(Data a) {
18 | this.o1 = a.b.c;
19 | }
20 |
21 | public Object getO2() {
22 | return this.o2;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/TestCollection.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public class TestCollection {
4 |
5 | public void add(Object o) {
6 | //
7 | }
8 |
9 | public void clear() {
10 |
11 | }
12 |
13 | public Object get() {
14 | return null;
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/UserCodeClass.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary;
2 |
3 | public class UserCodeClass implements IUserCodeClass {
4 |
5 | @Override
6 | public String callTheGap(String in) {
7 | return in;
8 | }
9 |
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/TaintWrapperFactory.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit;
2 |
3 | import soot.jimple.infoflow.taintWrappers.ITaintPropagationWrapper;
4 |
5 | public interface TaintWrapperFactory {
6 | public ITaintPropagationWrapper newTaintWrapper() throws Exception;
7 | }
8 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/WrapperListTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit;
2 |
3 | import soot.jimple.infoflow.IInfoflow;
4 | import soot.jimple.infoflow.methodSummary.taintWrappers.TaintWrapperFactory;
5 | import soot.jimple.infoflow.test.junit.ListTests;
6 |
7 | public abstract class WrapperListTests extends ListTests {
8 |
9 | @Override
10 | protected IInfoflow initInfoflow(boolean useTaintWrapper) {
11 | IInfoflow result = super.initInfoflow(useTaintWrapper);
12 | WrapperListTestConfig testConfig = new WrapperListTestConfig();
13 | result.setSootConfig(testConfig);
14 | try {
15 | result.setTaintWrapper(TaintWrapperFactory.createTaintWrapper());
16 | } catch (Exception e) {
17 | throw new RuntimeException("Could not initialize taint wrapper!");
18 | }
19 | return result;
20 | }
21 |
22 | }
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/WrapperMapTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit;
2 |
3 | import soot.jimple.infoflow.IInfoflow;
4 | import soot.jimple.infoflow.methodSummary.taintWrappers.TaintWrapperFactory;
5 | import soot.jimple.infoflow.test.junit.MapTests;
6 |
7 | public abstract class WrapperMapTests extends MapTests {
8 |
9 | @Override
10 | protected IInfoflow initInfoflow(boolean useTaintWrapper) {
11 | IInfoflow result = super.initInfoflow(useTaintWrapper);
12 | WrapperListTestConfig testConfig = new WrapperListTestConfig();
13 | result.setSootConfig(testConfig);
14 | try {
15 | result.setTaintWrapper(TaintWrapperFactory.createTaintWrapper());
16 | } catch (Exception e) {
17 | throw new RuntimeException("Could not initialize taint wrapper!");
18 | }
19 | return result;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/WrapperQueueTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit;
2 |
3 |
4 | import soot.jimple.infoflow.IInfoflow;
5 | import soot.jimple.infoflow.methodSummary.taintWrappers.TaintWrapperFactory;
6 | import soot.jimple.infoflow.test.junit.QueueTests;
7 |
8 | public abstract class WrapperQueueTests extends QueueTests {
9 | @Override
10 | protected IInfoflow initInfoflow(boolean useTaintWrapper) {
11 | IInfoflow result = super.initInfoflow(useTaintWrapper);
12 | WrapperListTestConfig testConfig = new WrapperListTestConfig();
13 | result.setSootConfig(testConfig);
14 | try {
15 | result.setTaintWrapper(TaintWrapperFactory.createTaintWrapper());
16 | } catch (Exception e) {
17 | throw new RuntimeException("Could not initialize taint wrapper!");
18 | }
19 | return result;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/WrapperVectorTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit;
2 |
3 |
4 | import soot.jimple.infoflow.IInfoflow;
5 | import soot.jimple.infoflow.methodSummary.taintWrappers.TaintWrapperFactory;
6 | import soot.jimple.infoflow.test.junit.VectorTests;
7 |
8 | public abstract class WrapperVectorTests extends VectorTests {
9 | @Override
10 | protected IInfoflow initInfoflow(boolean useTaintWrapper) {
11 | IInfoflow result = super.initInfoflow(useTaintWrapper);
12 | WrapperListTestConfig testConfig = new WrapperListTestConfig();
13 | result.setSootConfig(testConfig);
14 | try {
15 | result.setTaintWrapper(TaintWrapperFactory.createTaintWrapper());
16 | } catch (Exception e) {
17 | throw new RuntimeException("Could not initialize taint wrapper!");
18 | }
19 | return result;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/backward/SummaryTaintWrapperTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class SummaryTaintWrapperTests extends soot.jimple.infoflow.test.methodSummary.junit.SummaryTaintWrapperTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new BackwardsInfoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/backward/WrapperListTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class WrapperListTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperListTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new BackwardsInfoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/backward/WrapperMapTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class WrapperMapTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperMapTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new BackwardsInfoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/backward/WrapperQueueTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class WrapperQueueTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperQueueTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new BackwardsInfoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/backward/WrapperSetTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class WrapperSetTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperSetTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new BackwardsInfoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/backward/WrapperVectorTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class WrapperVectorTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperVectorTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new BackwardsInfoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/forward/SummaryTaintWrapperTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class SummaryTaintWrapperTests extends soot.jimple.infoflow.test.methodSummary.junit.SummaryTaintWrapperTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new Infoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/forward/WrapperListTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class WrapperListTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperListTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new Infoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/forward/WrapperMapTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class WrapperMapTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperMapTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new Infoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/forward/WrapperQueueTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class WrapperQueueTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperQueueTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new Infoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/forward/WrapperSetTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class WrapperSetTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperSetTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new Infoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow-summaries/test/soot/jimple/infoflow/test/methodSummary/junit/forward/WrapperVectorTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.methodSummary.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class WrapperVectorTests extends soot.jimple.infoflow.test.methodSummary.junit.WrapperVectorTests {
7 | @Override
8 | protected AbstractInfoflow createInfoflowInstance() {
9 | return new Infoflow(null, false, null);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow/.externalToolBuilders/org.eclipse.pde.ManifestBuilder.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/soot-infoflow/.externalToolBuilders/org.eclipse.pde.SchemaBuilder.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/soot-infoflow/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 |
3 | *.java text
4 | *.class binary
5 | *.jar binary
--------------------------------------------------------------------------------
/soot-infoflow/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | bin
3 | target
4 | /JimpleFiles
5 | /sootOutput
6 | /ant.settings
7 | reports
8 | /build
9 | /testclasses/
10 |
--------------------------------------------------------------------------------
/soot-infoflow/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | soot-infoflow
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.m2e.core.maven2Nature
21 | org.eclipse.jdt.core.javanature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/soot-infoflow/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 | encoding/schema=UTF-8
4 | encoding/src=UTF-8
5 | encoding/test=UTF-8
6 |
--------------------------------------------------------------------------------
/soot-infoflow/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/soot-infoflow/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Bundle-ManifestVersion: 2
3 | Bundle-Name: soot-infoflow
4 | Bundle-SymbolicName: soot-infoflow
5 | Bundle-Version: 1.0.0.qualifier
6 | Bundle-ClassPath: soot-infoflow.jar
7 | Require-Bundle: org.junit
8 | Bundle-RequiredExecutionEnvironment: JavaSE-1.8
9 |
--------------------------------------------------------------------------------
/soot-infoflow/securiBench/securibench/micro/collections/Collections11b.java:
--------------------------------------------------------------------------------
1 | /**
2 | @author Benjamin Livshits
3 |
4 | $Id: Collections11b.java,v 1.1 2006/04/21 17:14:26 livshits Exp $
5 | */
6 | package securibench.micro.collections;
7 |
8 | import java.io.IOException;
9 | import java.io.PrintWriter;
10 | import java.util.Collection;
11 |
12 | import jakarta.servlet.ServletResponse;
13 |
14 | /**
15 | * @servlet description = "simple collection deposit/retrieve"
16 | * @servlet vuln_count = "1"
17 | */
18 | class Collections11b {
19 | protected void foo(Object o, ServletResponse resp) throws IOException {
20 | Collection c = (Collection) o;
21 | String str = c.toString();
22 | PrintWriter writer = resp.getWriter();
23 | writer.println(str); /* BAD */
24 | }
25 | }
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/AnalysisPhase.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow;
2 |
3 | /**
4 | * Enumeration containing the phases of a data flow analysis
5 | *
6 | * @author Steven Arzt
7 | */
8 | public enum AnalysisPhase {
9 |
10 | /**
11 | * Taints are being propagated while solving the IFDS problem
12 | */
13 | TAINT_PROPAGATION,
14 |
15 | /**
16 | * Paths from source to sink are reconstructed from the taint graph generated by
17 | * the IFDS problem
18 | */
19 | PATH_RECONSTRUCTION
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/aliasing/AbstractAliasStrategy.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.aliasing;
2 |
3 | import soot.SootMethod;
4 | import soot.jimple.infoflow.InfoflowManager;
5 |
6 | /**
7 | * Common base class for alias strategies
8 | *
9 | * @author Steven Arzt
10 | */
11 | public abstract class AbstractAliasStrategy implements IAliasingStrategy {
12 |
13 | protected final InfoflowManager manager;
14 |
15 | public AbstractAliasStrategy(InfoflowManager manager) {
16 | this.manager = manager;
17 | }
18 |
19 | @Override
20 | public boolean hasProcessedMethod(SootMethod method) {
21 | return true;
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/aliasing/AbstractBulkAliasStrategy.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.aliasing;
2 |
3 | import soot.jimple.infoflow.InfoflowManager;
4 | import soot.jimple.infoflow.data.AccessPath;
5 |
6 | public abstract class AbstractBulkAliasStrategy extends AbstractAliasStrategy {
7 |
8 | public AbstractBulkAliasStrategy(InfoflowManager manager) {
9 | super(manager);
10 | }
11 |
12 | @Override
13 | public boolean isInteractive() {
14 | return false;
15 | }
16 |
17 | @Override
18 | public boolean mayAlias(AccessPath ap1, AccessPath ap2) {
19 | return false;
20 | }
21 |
22 |
23 | @Override
24 | public boolean isLazyAnalysis() {
25 | return false;
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/aliasing/AbstractInteractiveAliasStrategy.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.aliasing;
2 |
3 | import java.util.Set;
4 |
5 | import soot.SootMethod;
6 | import soot.Value;
7 | import soot.jimple.Stmt;
8 | import soot.jimple.infoflow.InfoflowManager;
9 | import soot.jimple.infoflow.data.Abstraction;
10 |
11 | public abstract class AbstractInteractiveAliasStrategy extends AbstractAliasStrategy {
12 |
13 | public AbstractInteractiveAliasStrategy(InfoflowManager manager) {
14 | super(manager);
15 | }
16 |
17 | @Override
18 | public void computeAliasTaints
19 | (final Abstraction d1, final Stmt src,
20 | final Value targetValue, Set taintSet,
21 | SootMethod method, Abstraction newAbs) {
22 | // nothing to do here
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/callmappers/IdentityCallerCalleeMapper.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.callmappers;
2 |
3 | /**
4 | * Maps caller and callee parameters in a one to one relationship
5 | * @author Marc Miltenberger
6 | */
7 | public class IdentityCallerCalleeMapper implements ICallerCalleeArgumentMapper {
8 |
9 | public static final ICallerCalleeArgumentMapper INSTANCE = new IdentityCallerCalleeMapper();
10 |
11 | @Override
12 | public int getCallerIndexOfCalleeParameter(int calleeParamIndex) {
13 | return calleeParamIndex;
14 | }
15 |
16 | @Override
17 | public int getCalleeIndexOfCallerParameter(int callerParameterIndex) {
18 | return callerParameterIndex;
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/callmappers/UnknownCallerCalleeMapper.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.callmappers;
2 |
3 | /**
4 | * Is applicaple when we have no mapping whatsoever.
5 | * @author Marc Miltenberger
6 | */
7 | public class UnknownCallerCalleeMapper implements ICallerCalleeArgumentMapper {
8 |
9 | public static final ICallerCalleeArgumentMapper INSTANCE = new UnknownCallerCalleeMapper();
10 |
11 | @Override
12 | public int getCallerIndexOfCalleeParameter(int calleeParamIndex) {
13 | return UNKNOWN;
14 | }
15 |
16 | @Override
17 | public int getCalleeIndexOfCallerParameter(int callerParameterIndex) {
18 | return UNKNOWN;
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/cfg/BiDirICFGFactory.java:
--------------------------------------------------------------------------------
1 | /**
2 | * (c) Copyright 2013, Tata Consultancy Services & Ecole Polytechnique de Montreal
3 | * All rights reserved
4 | */
5 | package soot.jimple.infoflow.cfg;
6 |
7 | import soot.jimple.infoflow.InfoflowConfiguration.CallgraphAlgorithm;
8 | import soot.jimple.infoflow.solver.cfg.IInfoflowCFG;
9 |
10 | /**
11 | * Interface for all factories that can create bi-directional interprocedural
12 | * control flow graphs.
13 | *
14 | * @author Steven Arzt
15 | * @author Marc-Andre Laverdiere-Papineau
16 | *
17 | */
18 | public interface BiDirICFGFactory {
19 |
20 | public IInfoflowCFG buildBiDirICFG(CallgraphAlgorithm callgraphAlgorithm,
21 | boolean enableExceptionTracking);
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/cfg/FlowDroidEssentialMethodTag.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.cfg;
2 |
3 | import soot.tagkit.AttributeValueException;
4 | import soot.tagkit.Tag;
5 |
6 | /**
7 | * Tag for marking a method as essential, i.e., data flows must always be
8 | * tracked through this method, even if its parent class is a system class
9 | * or excluded by some other means.
10 | *
11 | * @author Steven Arzt
12 | *
13 | */
14 | public class FlowDroidEssentialMethodTag implements Tag {
15 |
16 | public static final String TAG_NAME = "fd_essential_method";
17 |
18 | @Override
19 | public String getName() {
20 | return TAG_NAME;
21 | }
22 |
23 | @Override
24 | public byte[] getValue() throws AttributeValueException {
25 | return null;
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/cfg/FlowDroidUserClass.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.cfg;
2 |
3 | import soot.tagkit.AttributeValueException;
4 | import soot.tagkit.Tag;
5 |
6 | /**
7 | * Marks a class that is identified as a user class by FlowDroid or the user
8 | *
9 | * @author Tim Lange
10 | */
11 | public class FlowDroidUserClass implements Tag {
12 | public static final String TAG_NAME = "fd_userclass";
13 |
14 | private static final FlowDroidUserClass INSTANCE = new FlowDroidUserClass();
15 |
16 | public static FlowDroidUserClass v() {
17 | return INSTANCE;
18 | }
19 |
20 | @Override
21 | public String getName() {
22 | return TAG_NAME;
23 | }
24 |
25 | @Override
26 | public byte[] getValue() throws AttributeValueException {
27 | return null;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collect/IdentityWrapper.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collect;
2 |
3 | class IdentityWrapper {
4 |
5 | private final E contents;
6 |
7 | public IdentityWrapper(E abs) {
8 | this.contents = abs;
9 | }
10 |
11 | public E getContents() {
12 | return this.contents;
13 | }
14 |
15 | @Override
16 | public String toString() {
17 | return this.contents.toString();
18 | }
19 |
20 | @SuppressWarnings("rawtypes")
21 | @Override
22 | public boolean equals(Object other) {
23 | if (other == null)
24 | return false;
25 | if (other == this)
26 | return true;
27 | if (this.getClass() != other.getClass())
28 | return false;
29 | return this.contents == ((IdentityWrapper) other).contents;
30 | }
31 |
32 | @Override
33 | public int hashCode() {
34 | return System.identityHashCode(this.contents);
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/ICollectionsSupport.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections;
2 |
3 | import java.util.Set;
4 |
5 | import soot.jimple.Stmt;
6 | import soot.jimple.infoflow.collections.strategies.containers.IContainerStrategy;
7 | import soot.jimple.infoflow.data.Abstraction;
8 | import soot.jimple.infoflow.taintWrappers.ITaintPropagationWrapper;
9 |
10 | public interface ICollectionsSupport extends ITaintPropagationWrapper {
11 | Set getTaintsForMethodApprox(Stmt stmt, Abstraction d1, Abstraction incoming);
12 |
13 | IContainerStrategy getContainerStrategy();
14 | }
15 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/context/ValueBasedContext.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.context;
2 |
3 | import soot.jimple.infoflow.collections.util.Tristate;
4 | import soot.jimple.infoflow.data.ContainerContext;
5 |
6 | /**
7 | * Interface for all value-based contexts
8 | * Immutable by default.
9 | *
10 | * @param concrete value-based context type
11 | */
12 | public interface ValueBasedContext> extends ContainerContext {
13 | /**
14 | * Check whether this and other intersects
15 | *
16 | * @param other value-based context
17 | * @return true on perfect match, maybe on part match and otherwise false
18 | */
19 | Tristate intersect(T other);
20 | }
21 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/strategies/containers/ConstantMapStrategyFactory.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.strategies.containers;
2 |
3 | import soot.jimple.infoflow.InfoflowManager;
4 |
5 | /**
6 | * This factory can be used to instantiate a {@link ConstantMapStrategy}.
7 | *
8 | * @author Marc Miltenberger
9 | */
10 | public class ConstantMapStrategyFactory implements IContainerStrategyFactory {
11 |
12 | @Override
13 | public IContainerStrategy create(InfoflowManager manager) {
14 | return new ConstantMapStrategy(manager);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/strategies/containers/IContainerStrategyFactory.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.strategies.containers;
2 |
3 | import soot.jimple.infoflow.InfoflowManager;
4 |
5 | /**
6 | * This factory can be used to instantiate an {@link IContainerStrategy}.
7 | *
8 | * @author Marc Miltenberger
9 | */
10 | public interface IContainerStrategyFactory {
11 |
12 | /**
13 | * Creates a new container strategy
14 | * @param manager the infoflow manager
15 | * @return the container strategy
16 | */
17 | public IContainerStrategy create(InfoflowManager manager);
18 | }
19 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/strategies/containers/shift/IShiftOperation.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.strategies.containers.shift;
2 |
3 | import soot.jimple.infoflow.data.ContainerContext;
4 |
5 | public interface IShiftOperation {
6 | ContainerContext shift(ContainerContext ctxt, int n, boolean exact);
7 | }
8 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/strategies/containers/shift/InvalidateShift.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.strategies.containers.shift;
2 |
3 | import soot.jimple.infoflow.collections.context.UnknownContext;
4 | import soot.jimple.infoflow.data.ContainerContext;
5 |
6 | public class InvalidateShift implements IShiftOperation {
7 | @Override
8 | public ContainerContext shift(ContainerContext ctxt, int n, boolean exact) {
9 | return UnknownContext.v();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/strategies/containers/shift/MinMaxShift.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.strategies.containers.shift;
2 |
3 | import soot.jimple.infoflow.collections.context.IntervalContext;
4 | import soot.jimple.infoflow.data.ContainerContext;
5 |
6 | public class MinMaxShift implements IShiftOperation {
7 | @Override
8 | public ContainerContext shift(ContainerContext ctxt, int n, boolean exact) {
9 | if (ctxt instanceof IntervalContext) {
10 | int min = n < 0 ? 0 : ((IntervalContext) ctxt).getMin();
11 | int max = n > 0 ? Integer.MAX_VALUE : ((IntervalContext) ctxt).getMax();
12 | return new IntervalContext(min, max);
13 | }
14 |
15 | throw new RuntimeException("Expect interval context but got: " + ctxt.getClass().getName());
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/strategies/containers/shift/PreciseShift.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.strategies.containers.shift;
2 |
3 | import soot.jimple.infoflow.collections.context.IntervalContext;
4 | import soot.jimple.infoflow.data.ContainerContext;
5 |
6 | public class PreciseShift implements IShiftOperation {
7 | @Override
8 | public ContainerContext shift(ContainerContext ctxt, int n, boolean exact) {
9 | if (ctxt instanceof IntervalContext) {
10 | IntervalContext shifted = ((IntervalContext) ctxt).exactShift(new IntervalContext(n));
11 | return exact ? shifted : ((IntervalContext) ctxt).union(shifted);
12 | }
13 |
14 | throw new RuntimeException("Expect interval context but got: " + ctxt.getClass().getName());
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/collections/util/NonNullHashSet.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.collections.util;
2 |
3 | import java.util.HashSet;
4 |
5 | public class NonNullHashSet extends HashSet {
6 |
7 | private static final long serialVersionUID = -7700007534552087413L;
8 |
9 | @Override
10 | public boolean add(E e) {
11 | if (e == null)
12 | return false;
13 | return super.add(e);
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/config/PreciseCollectionStrategy.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.config;
2 |
3 | /**
4 | * Allows to configure the strategy to use with collections and maps.
5 | */
6 | public enum PreciseCollectionStrategy {
7 | /**
8 | * Noe support for precise container access (default)
9 | */
10 | NONE,
11 |
12 | /**
13 | * Supports maps with constant access, e.g.
14 | * map.put("a", getSource());
15 | * sink(map.get("b"));
16 | * will not trigger a leak.
17 | * Note that you will need to use the Summary taint wrapper in order to get proper support.
18 | */
19 | CONSTANT_MAP_SUPPORT
20 | }
21 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/entryPointCreators/SimulatedCodeElementTag.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.entryPointCreators;
2 |
3 | import soot.tagkit.AttributeValueException;
4 | import soot.tagkit.Tag;
5 |
6 | /**
7 | * Tag to denote that a certain method or class was created by an entry point
8 | * creator and should not be considered real app code
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public class SimulatedCodeElementTag implements Tag {
14 |
15 | public static final String TAG_NAME = "SimulatedCodeElementTag";
16 | public static SimulatedCodeElementTag TAG = new SimulatedCodeElementTag();
17 |
18 | private SimulatedCodeElementTag() {
19 | //
20 | }
21 |
22 | @Override
23 | public String getName() {
24 | return TAG_NAME;
25 | }
26 |
27 | @Override
28 | public byte[] getValue() throws AttributeValueException {
29 | return null;
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/entryPointCreators/SimulatedDynamicInvokeTag.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.entryPointCreators;
2 |
3 | import soot.tagkit.AttributeValueException;
4 | import soot.tagkit.Tag;
5 |
6 | /**
7 | * Tag to denote that a certain statement is simulating the effects of a dynamic invoke
8 | *
9 | */
10 | public class SimulatedDynamicInvokeTag implements Tag {
11 |
12 | public static final String TAG_NAME = "SimulatedDynamicInvokeTag";
13 | public static SimulatedDynamicInvokeTag TAG = new SimulatedDynamicInvokeTag();
14 |
15 | private SimulatedDynamicInvokeTag() {
16 | //
17 | }
18 |
19 | @Override
20 | public String getName() {
21 | return TAG_NAME;
22 | }
23 |
24 | @Override
25 | public byte[] getValue() throws AttributeValueException {
26 | return null;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/handlers/PreAnalysisHandler.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.handlers;
2 |
3 | /**
4 | * Handler that allows clients to execute certain tasks before the actual data
5 | * flow analysis is executed.
6 | *
7 | * @author Steven Arzt
8 | *
9 | */
10 | public interface PreAnalysisHandler {
11 |
12 | /**
13 | * This method is called before the callgraph is constructed
14 | */
15 | public void onBeforeCallgraphConstruction();
16 |
17 | /**
18 | * This method is called after the callgraph has been constructed, but
19 | * before the actual data flow analysis is carried out.
20 | */
21 | public void onAfterCallgraphConstruction();
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/memory/ISolverTerminationReason.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.memory;
2 |
3 | /**
4 | * Common interface for all classes that describe why a solver was forcefully
5 | * terminated
6 | *
7 | * @author Steven Arzt
8 | *
9 | */
10 | public interface ISolverTerminationReason {
11 |
12 | /**
13 | * Combines this termination reason with the given one
14 | *
15 | * @param terminationReason
16 | * The reason to combine this one with
17 | * @return A combined termination reason that models the current reason as well
18 | * as the given one, i.e., the fact that the solver was terminated for
19 | * multiple reasons
20 | */
21 | public ISolverTerminationReason combine(ISolverTerminationReason terminationReason);
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/memory/ISolversTerminatedCallback.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.memory;
2 |
3 | /**
4 | * Callback to notify the outside world that the solvers have been terminated
5 | *
6 | * @author Steven Arzt
7 | *
8 | */
9 | public interface ISolversTerminatedCallback {
10 |
11 | /**
12 | * This method is invoked when all solvers have been terminated due to a timeout
13 | */
14 | public void onSolversTerminated();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/memory/reasons/AbortRequestedReason.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.memory.reasons;
2 |
3 | import soot.jimple.infoflow.memory.ISolverTerminationReason;
4 |
5 | /**
6 | * Reason for terminating a data flow solver after an external request
7 | *
8 | * @author Steven Arzt
9 | *
10 | */
11 | public class AbortRequestedReason implements ISolverTerminationReason {
12 |
13 | @Override
14 | public ISolverTerminationReason combine(ISolverTerminationReason terminationReason) {
15 | return new MultiReason(this, terminationReason);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/nativeCallHandler/AbstractNativeCallHandler.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.nativeCallHandler;
2 |
3 | import soot.jimple.infoflow.InfoflowManager;
4 |
5 | /**
6 | * Abstract base class for all native call handlers
7 | *
8 | * @author Steven Arzt
9 | *
10 | */
11 | public abstract class AbstractNativeCallHandler implements INativeCallHandler {
12 |
13 | /**
14 | * Data flow manager that gives access to internal solver objects
15 | */
16 | protected InfoflowManager manager;
17 |
18 | @Override
19 | public void initialize(InfoflowManager manager) {
20 | this.manager = manager;
21 | }
22 |
23 | @Override
24 | public void shutdown() {
25 | //
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/problems/rules/DummyArrayContext.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.problems.rules;
2 |
3 | import soot.jimple.ArrayRef;
4 | import soot.jimple.Stmt;
5 | import soot.jimple.infoflow.data.ContainerContext;
6 |
7 | public class DummyArrayContext implements IArrayContextProvider {
8 | public ContainerContext[] getContextForArrayRef(ArrayRef arrayRef, Stmt stmt) {
9 | return null;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/problems/rules/EmptyPropagationRuleManagerFactory.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.problems.rules;
2 |
3 | import soot.jimple.infoflow.InfoflowManager;
4 | import soot.jimple.infoflow.data.Abstraction;
5 | import soot.jimple.infoflow.problems.TaintPropagationResults;
6 |
7 | /**
8 | * A factory that creates a rule manager factory without any rules
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public class EmptyPropagationRuleManagerFactory implements IPropagationRuleManagerFactory {
14 |
15 | public static EmptyPropagationRuleManagerFactory INSTANCE = new EmptyPropagationRuleManagerFactory();
16 |
17 | @Override
18 | public PropagationRuleManager createRuleManager(InfoflowManager manager, Abstraction zeroValue,
19 | TaintPropagationResults results) {
20 | return IdentityPropagationRuleManager.INSTANCE;
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/problems/rules/IArrayContextProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.problems.rules;
2 |
3 | import soot.jimple.ArrayRef;
4 | import soot.jimple.Stmt;
5 | import soot.jimple.infoflow.data.ContainerContext;
6 |
7 | public interface IArrayContextProvider {
8 | /**
9 | * Returns the context definition for an array
10 | *
11 | * @param arrayRef array reference
12 | * @param stmt
13 | * @return context definition
14 | */
15 | ContainerContext[] getContextForArrayRef(ArrayRef arrayRef, Stmt stmt);
16 | }
17 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/resources/controls/JavaSwingLayoutControl.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.resources.controls;
2 |
3 | /**
4 | * Base class for all layout controls in Java Swing
5 | *
6 | * @author Steven Arzt
7 | *
8 | */
9 | public abstract class JavaSwingLayoutControl extends LayoutControl {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/results/xml/SerializedPathElement.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.results.xml;
2 |
3 | /**
4 | * Class representing an element on the taint propagation path of a data flow
5 | * result
6 | *
7 | * @author Steven Arzt
8 | *
9 | */
10 | public class SerializedPathElement extends AbstractSerializedSourceSink {
11 |
12 | SerializedPathElement(SerializedAccessPath ap, String statement,
13 | String method) {
14 | super(ap, statement, method);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/river/AdditionalFlowInfoSourceContext.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.river;
2 |
3 | import soot.jimple.Stmt;
4 | import soot.jimple.infoflow.data.AccessPath;
5 | import soot.jimple.infoflow.data.SourceContext;
6 | import soot.jimple.infoflow.sourcesSinks.definitions.ISourceSinkDefinition;
7 |
8 | /**
9 | * Source context implementation for additional data flow information on a
10 | * vulnerability, i.e. for finding which data is encrypted with a hard-coded key
11 | *
12 | * @author Steven Arzt
13 | *
14 | */
15 | public class AdditionalFlowInfoSourceContext extends SourceContext {
16 |
17 | public AdditionalFlowInfoSourceContext(ISourceSinkDefinition definition, AccessPath accessPath, Stmt stmt) {
18 | super(definition, accessPath, stmt);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/river/EmptyUsageContextProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.river;
2 |
3 | import soot.jimple.Stmt;
4 | import soot.jimple.infoflow.data.Abstraction;
5 |
6 | import java.util.Collections;
7 | import java.util.Set;
8 |
9 | /**
10 | * Default implementation that does not request any usage contexts
11 | *
12 | * @author Tim Lange
13 | */
14 | public class EmptyUsageContextProvider implements IUsageContextProvider {
15 |
16 | @Override
17 | public Set needsAdditionalInformation(Stmt stmt, Set taints) {
18 | return Collections.emptySet();
19 | }
20 |
21 | @Override
22 | public boolean isStatementWithAdditionalInformation(Stmt stmt, Abstraction abs) {
23 | return false;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/solver/IFollowReturnsPastSeedsHandler.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.solver;
2 |
3 | import soot.Unit;
4 | import soot.jimple.infoflow.data.Abstraction;
5 |
6 | /**
7 | * Common interface for handlers that take care of follow-return-past-seeds
8 | * cases which the normal solver does not handle
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public interface IFollowReturnsPastSeedsHandler {
14 |
15 | /**
16 | * This method is called when followReturnsPastSeeds is enabled and a taint
17 | * leaves a method for which we do not have any callers.
18 | * @param d1 The abstraction at the beginning of the callee
19 | * @param u The return site
20 | * @param d2 The abstraction at the return site
21 | */
22 | public void handleFollowReturnsPastSeeds(Abstraction d1, Unit u, Abstraction d2);
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/solver/IStrategyBasedParallelSolver.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.solver;
2 |
3 | import soot.jimple.infoflow.solver.fastSolver.FastSolverLinkedNode;
4 | import soot.jimple.infoflow.solver.fastSolver.ISchedulingStrategy;
5 |
6 | /**
7 | * Common interface for IFDS solvers that schedule their IFDS edge processing
8 | * tasks based on interchangeable strategies
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public interface IStrategyBasedParallelSolver> {
14 |
15 | /**
16 | * Sets the strategy for scheduling edges
17 | *
18 | * @param strategy The strategy for scheduling edges
19 | */
20 | public void setSchedulingStrategy(ISchedulingStrategy strategy);
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/solver/gcSolver/GCSolverPeerGroup.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.solver.gcSolver;
2 |
3 | import soot.jimple.infoflow.solver.DefaultSolverPeerGroup;
4 |
5 | /**
6 | * Specialized solver peer group for garbage-collecting solvers
7 | *
8 | * @author Steven Arzt
9 | *
10 | */
11 | public class GCSolverPeerGroup extends DefaultSolverPeerGroup {
12 |
13 | private GarbageCollectorPeerGroup gcPeerGroup = null;
14 |
15 | public GCSolverPeerGroup() {
16 | }
17 |
18 | /**
19 | * Creates the peer group for the garbage collectors
20 | *
21 | * @return The garbage collector peer group
22 | */
23 | public GarbageCollectorPeerGroup getGCPeerGroup() {
24 | if (gcPeerGroup == null)
25 | gcPeerGroup = new GarbageCollectorPeerGroup<>();
26 | return gcPeerGroup;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/solver/gcSolver/GarbageCollectionTrigger.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.solver.gcSolver;
2 |
3 | /**
4 | * Possible triggers when to start garbage collection
5 | *
6 | * @author Steven Arzt
7 | *
8 | */
9 | public enum GarbageCollectionTrigger {
10 |
11 | /**
12 | * Garbage collection is triggered immediately when a new edge has been
13 | * propagated
14 | */
15 | Immediate,
16 |
17 | /**
18 | * Start garbage collection after the method threshold has been reached
19 | */
20 | MethodThreshold,
21 |
22 | /**
23 | * Start garbage collection after the edge threshold has been reached
24 | */
25 | EdgeThreshold,
26 |
27 | /**
28 | * Compute the thresholds, but never actually gargabe-collect anything. Useful
29 | * only as a performance baseline.
30 | */
31 | Never
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/solver/gcSolver/IGarbageCollectorPeer.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.solver.gcSolver;
2 |
3 | /**
4 | * A garbage collector that can operate as part of a peer group
5 | *
6 | * @author Steven Arzt
7 | *
8 | */
9 | public interface IGarbageCollectorPeer {
10 |
11 | /**
12 | * Checks whether the given abstraction has any open dependencies in any of the
13 | * solvers that are members of this peer group that prevent its jump functions
14 | * from being garbage collected
15 | *
16 | * @param abstraction The abstraction to check
17 | * @return True if the abstraction has active dependencies and thus cannot be
18 | * garbage-collected, false otherwise
19 | */
20 | public boolean hasActiveDependencies(A abstraction);
21 |
22 | public void notifySolverTerminated();
23 | }
24 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/solver/gcSolver/fpc/IGraph.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.solver.gcSolver.fpc;
2 |
3 | import java.util.Set;
4 |
5 | public interface IGraph {
6 |
7 | public Set getNodes();
8 |
9 | public Set succsOf(N n);
10 |
11 | public Set predsOf(N n);
12 |
13 | public void addNode(N n);
14 |
15 | public void addEdge(N n1, N n2);
16 |
17 | public boolean contains(N n);
18 |
19 | /*
20 | * removing the node itself and all edges it associated with.
21 | */
22 | public void remove(N n);
23 |
24 | public void removeEdge(N n1, N n2);
25 | }
26 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/sourcesSinks/definitions/ISourceSinkCategory.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.sourcesSinks.definitions;
2 |
3 | /**
4 | * Common interface for all classes that provide categorization or some other
5 | * form of organization for sources or sinks
6 | *
7 | * @author Steven Arzt
8 | *
9 | */
10 | public interface ISourceSinkCategory {
11 |
12 | /**
13 | * Gets a human-readable description of the current category. This can be
14 | * different from toString(), which is allowed to yield a more technical
15 | * description.
16 | *
17 | * @return A human readable description for this category
18 | */
19 | public String getHumanReadableDescription();
20 |
21 | /**
22 | * Gets a machine-readable description of the current category.
23 | *
24 | * @return An id for this category
25 | */
26 | public String getID();
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/sourcesSinks/definitions/ImmutableAccessPathTuple.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.sourcesSinks.definitions;
2 |
3 | /**
4 | * Immutable version of the {@link AccessPathTuple}
5 | *
6 | * @author Steven Arzt
7 | *
8 | */
9 | public class ImmutableAccessPathTuple extends AccessPathTuple {
10 |
11 | public ImmutableAccessPathTuple(AccessPathTuple parent) {
12 | super(parent);
13 | }
14 |
15 | @Override
16 | public void setDescription(String description) {
17 | throw new RuntimeException("Immutable object cannot be modified");
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/sourcesSinks/definitions/InvalidAccessPathException.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.sourcesSinks.definitions;
2 |
3 | public class InvalidAccessPathException extends RuntimeException {
4 |
5 | private static final long serialVersionUID = -4996789547058608944L;
6 |
7 | public InvalidAccessPathException() {
8 | super();
9 | }
10 |
11 | public InvalidAccessPathException(String message, Throwable cause, boolean enableSuppression,
12 | boolean writableStackTrace) {
13 | super(message, cause, enableSuppression, writableStackTrace);
14 | }
15 |
16 | public InvalidAccessPathException(String message, Throwable cause) {
17 | super(message, cause);
18 | }
19 |
20 | public InvalidAccessPathException(String message) {
21 | super(message);
22 | }
23 |
24 | public InvalidAccessPathException(Throwable cause) {
25 | super(cause);
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/sourcesSinks/definitions/NullSourceSinkDefinitionProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.sourcesSinks.definitions;
2 |
3 | import java.util.Collections;
4 | import java.util.Set;
5 |
6 | /**
7 | * Empty provider that simulates empty lists of sources and sinks
8 | *
9 | * @author Steven Arzt
10 | *
11 | */
12 | public class NullSourceSinkDefinitionProvider implements ISourceSinkDefinitionProvider {
13 |
14 | @Override
15 | public Set getSources() {
16 | return Collections.emptySet();
17 | }
18 |
19 | @Override
20 | public Set getSinks() {
21 | return Collections.emptySet();
22 | }
23 |
24 | @Override
25 | public Set getAllMethods() {
26 | return Collections.emptySet();
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/soot-infoflow/src/soot/jimple/infoflow/values/IValueProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.values;
2 |
3 | import soot.SootMethod;
4 | import soot.Value;
5 | import soot.jimple.Stmt;
6 |
7 | /**
8 | * Common interface for all algorithms that provide constant values
9 | *
10 | * @author Steven Arzt
11 | *
12 | */
13 | public interface IValueProvider {
14 |
15 | public T getValue(SootMethod sm, Stmt stmt, Value value, Class type);
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/android/Base64.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.android;
2 |
3 | public class Base64 {
4 |
5 | public static String encodeToString(@SuppressWarnings("unused") byte[] input) {
6 | return "";
7 | }
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/android/Bundle.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2012 Secure Software Engineering Group at EC SPRIDE.
3 | * All rights reserved. This program and the accompanying materials
4 | * are made available under the terms of the GNU Lesser Public License v2.1
5 | * which accompanies this distribution, and is available at
6 | * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
7 | *
8 | * Contributors: Christian Fritz, Steven Arzt, Siegfried Rasthofer, Eric
9 | * Bodden, and others.
10 | ******************************************************************************/
11 | package soot.jimple.infoflow.test.android;
12 |
13 | public class Bundle {
14 |
15 | public static Object get(String key){
16 | return new String[] { key };
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/android/Location.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.android;
2 |
3 | public class Location {
4 |
5 | private double longitude;
6 | private double latitude;
7 |
8 | public Location() {
9 |
10 | }
11 |
12 | public Location(double longitude, double latitude) {
13 | this.longitude = longitude;
14 | this.latitude = latitude;
15 | }
16 |
17 | public double getLongitude() {
18 | return this.longitude;
19 | }
20 |
21 | public double getLatitude() {
22 | return this.latitude;
23 | }
24 |
25 | public Location clear() {
26 | this.longitude = 0.0d;
27 | this.latitude = 0.0d;
28 | return this;
29 | }
30 |
31 | public Location clearLongitude() {
32 | this.longitude = 0.0d;
33 | return new Location();
34 | }
35 |
36 | public void setLongitude(double longitude) {
37 | this.longitude = longitude;
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/android/LocationManager.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.android;
2 |
3 | public class LocationManager {
4 |
5 | public static double getLongitude() {
6 | return 3.1415d;
7 | }
8 |
9 | public static Location getLastKnownLocation() {
10 | return new Location();
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/android/LocationProvider.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.android;
2 |
3 | public class LocationProvider {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/collect/ConcurrentCountingMapTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.collect;
2 |
3 | import static org.junit.Assert.assertEquals;
4 |
5 | import org.junit.Test;
6 |
7 | import soot.jimple.infoflow.collect.ConcurrentCountingMap;
8 |
9 | public class ConcurrentCountingMapTest {
10 |
11 | @Test
12 | public void keySetTest() {
13 | ConcurrentCountingMap map = new ConcurrentCountingMap<>();
14 | map.increment("Hello");
15 | map.increment("World");
16 | for (String k : map.keySet())
17 | assertEquals(new Integer(1), map.get(k));
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/ArrayTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class ArrayTests extends soot.jimple.infoflow.test.junit.ArrayTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/BasicTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class BasicTests extends soot.jimple.infoflow.test.junit.BasicTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/BytecodeTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class BytecodeTests extends soot.jimple.infoflow.test.junit.BytecodeTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/CallbackTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class CallbackTests extends soot.jimple.infoflow.test.junit.CallbackTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/ConstantTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class ConstantTests extends soot.jimple.infoflow.test.junit.ConstantTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/ContextSensitivityTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class ContextSensitivityTests extends soot.jimple.infoflow.test.junit.ContextSensitivityTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/EasyWrapperListTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import java.io.IOException;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.BackwardsInfoflow;
7 |
8 | public class EasyWrapperListTests extends soot.jimple.infoflow.test.junit.EasyWrapperListTests {
9 |
10 | public EasyWrapperListTests() throws IOException {
11 | super();
12 | }
13 |
14 | @Override
15 | protected AbstractInfoflow createInfoflowInstance() {
16 | return new BackwardsInfoflow(null, false, null);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/EasyWrapperTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import java.io.IOException;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.BackwardsInfoflow;
7 |
8 | public class EasyWrapperTests extends soot.jimple.infoflow.test.junit.EasyWrapperTests {
9 |
10 | public EasyWrapperTests() throws IOException {
11 | super();
12 | }
13 |
14 | @Override
15 | protected AbstractInfoflow createInfoflowInstance() {
16 | return new BackwardsInfoflow(null, false, null);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/ExceptionTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import org.junit.Ignore;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.BackwardsInfoflow;
7 |
8 | public class ExceptionTests extends soot.jimple.infoflow.test.junit.ExceptionTests {
9 |
10 | @Override
11 | protected AbstractInfoflow createInfoflowInstance() {
12 | return new BackwardsInfoflow(null, false, null);
13 | }
14 |
15 | @Override
16 | @Ignore("Exceptional unit graph incomplete for runtime exceptions")
17 | public void callMethodParamReturnTest2b() {
18 | // ignored
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/FutureTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import org.junit.Ignore;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.BackwardsInfoflow;
7 |
8 | @Ignore
9 | public class FutureTests extends soot.jimple.infoflow.test.junit.FutureTests {
10 |
11 | @Override
12 | protected AbstractInfoflow createInfoflowInstance() {
13 | return new BackwardsInfoflow(null, false, null);
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/HTTPTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class HTTPTests extends soot.jimple.infoflow.test.junit.HTTPTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/HeapTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import org.junit.Ignore;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.BackwardsInfoflow;
7 |
8 | public class HeapTests extends soot.jimple.infoflow.test.junit.HeapTests {
9 |
10 | @Override
11 | protected AbstractInfoflow createInfoflowInstance() {
12 | return new BackwardsInfoflow(null, false, null);
13 | }
14 |
15 | @Override
16 | @Ignore("PTS-Based aliasing")
17 | public void aliasPerformanceTestFIS() {
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/HierarchyTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class HierarchyTests extends soot.jimple.infoflow.test.junit.HierarchyTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/ImplicitFlowTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import org.junit.Ignore;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.BackwardsInfoflow;
7 |
8 | public class ImplicitFlowTests extends soot.jimple.infoflow.test.junit.ImplicitFlowTests {
9 |
10 | @Override
11 | protected AbstractInfoflow createInfoflowInstance() {
12 | return new BackwardsInfoflow(null, false, null);
13 | }
14 |
15 | @Ignore("When running backwards, we don't know that the method will be from a "
16 | + "different class depending on the instantiation of the object that we don't "
17 | + "see until further up in the code, i.e., later in the analysis")
18 | @Override
19 | public void dataClassSetterTest() {
20 | //
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/InFunctionTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class InFunctionTests extends soot.jimple.infoflow.test.junit.InFunctionTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/InheritanceTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class InheritanceTests extends soot.jimple.infoflow.test.junit.InheritanceTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/LengthTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class LengthTests extends soot.jimple.infoflow.test.junit.LengthTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/ListTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class ListTests extends soot.jimple.infoflow.test.junit.ListTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/MapTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class MapTests extends soot.jimple.infoflow.test.junit.MapTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/MultiTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class MultiTest extends soot.jimple.infoflow.test.junit.MultiTest {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/OperationSemanticTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class OperationSemanticTests extends soot.jimple.infoflow.test.junit.OperationSemanticTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/OtherTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class OtherTests extends soot.jimple.infoflow.test.junit.OtherTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/OverwriteTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class OverwriteTests extends soot.jimple.infoflow.test.junit.OverwriteTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/QueueTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class QueueTests extends soot.jimple.infoflow.test.junit.QueueTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/ReflectionTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class ReflectionTests extends soot.jimple.infoflow.test.junit.ReflectionTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/SingleJoinPointTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class SingleJoinPointTests extends soot.jimple.infoflow.test.junit.SingleJoinPointTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/SourceSinkTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class SourceSinkTests extends soot.jimple.infoflow.test.junit.SourceSinkTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/StringTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class StringTests extends soot.jimple.infoflow.test.junit.StringTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/ThreadTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class ThreadTests extends soot.jimple.infoflow.test.junit.ThreadTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/TypeTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class TypeTests extends soot.jimple.infoflow.test.junit.TypeTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/backward/VectorTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.backward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.BackwardsInfoflow;
5 |
6 | public class VectorTests extends soot.jimple.infoflow.test.junit.VectorTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new BackwardsInfoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/ArrayTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class ArrayTests extends soot.jimple.infoflow.test.junit.ArrayTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/BasicTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class BasicTests extends soot.jimple.infoflow.test.junit.BasicTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/BytecodeTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class BytecodeTests extends soot.jimple.infoflow.test.junit.BytecodeTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/CallbackTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class CallbackTests extends soot.jimple.infoflow.test.junit.CallbackTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/ConstantTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class ConstantTests extends soot.jimple.infoflow.test.junit.ConstantTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/ContextSensitivityTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class ContextSensitivityTests extends soot.jimple.infoflow.test.junit.ContextSensitivityTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/EasyWrapperListTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import java.io.IOException;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.Infoflow;
7 |
8 | public class EasyWrapperListTests extends soot.jimple.infoflow.test.junit.EasyWrapperListTests {
9 |
10 | public EasyWrapperListTests() throws IOException {
11 | super();
12 | }
13 |
14 | @Override
15 | protected AbstractInfoflow createInfoflowInstance() {
16 | return new Infoflow(null, false, null);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/EasyWrapperTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import java.io.IOException;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.Infoflow;
7 |
8 | public class EasyWrapperTests extends soot.jimple.infoflow.test.junit.EasyWrapperTests {
9 |
10 | public EasyWrapperTests() throws IOException {
11 | super();
12 | }
13 |
14 | @Override
15 | protected AbstractInfoflow createInfoflowInstance() {
16 | return new Infoflow(null, false, null);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/ExceptionTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class ExceptionTests extends soot.jimple.infoflow.test.junit.ExceptionTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/FutureTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import org.junit.Ignore;
4 |
5 | import soot.jimple.infoflow.AbstractInfoflow;
6 | import soot.jimple.infoflow.Infoflow;
7 |
8 | @Ignore
9 | public class FutureTests extends soot.jimple.infoflow.test.junit.FutureTests {
10 |
11 | @Override
12 | protected AbstractInfoflow createInfoflowInstance() {
13 | return new Infoflow(null, false, null);
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/HTTPTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class HTTPTests extends soot.jimple.infoflow.test.junit.HTTPTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/HeapTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class HeapTests extends soot.jimple.infoflow.test.junit.HeapTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/HeapTestsPtsAliasing.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class HeapTestsPtsAliasing extends soot.jimple.infoflow.test.junit.HeapTestsPtsAliasing {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/HierarchyTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class HierarchyTests extends soot.jimple.infoflow.test.junit.HierarchyTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/ImplicitFlowTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class ImplicitFlowTests extends soot.jimple.infoflow.test.junit.ImplicitFlowTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/InFunctionTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class InFunctionTests extends soot.jimple.infoflow.test.junit.InFunctionTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/InheritanceTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class InheritanceTests extends soot.jimple.infoflow.test.junit.InheritanceTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/LengthTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class LengthTests extends soot.jimple.infoflow.test.junit.LengthTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/ListTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class ListTests extends soot.jimple.infoflow.test.junit.ListTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/MapTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class MapTests extends soot.jimple.infoflow.test.junit.MapTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/MultiTest.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class MultiTest extends soot.jimple.infoflow.test.junit.MultiTest {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/OperationSemanticTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class OperationSemanticTests extends soot.jimple.infoflow.test.junit.OperationSemanticTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/OtherTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class OtherTests extends soot.jimple.infoflow.test.junit.OtherTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/OverwriteTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class OverwriteTests extends soot.jimple.infoflow.test.junit.OverwriteTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/QueueTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class QueueTests extends soot.jimple.infoflow.test.junit.QueueTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/ReflectionTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class ReflectionTests extends soot.jimple.infoflow.test.junit.ReflectionTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/SetTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class SetTests extends soot.jimple.infoflow.test.junit.SetTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/SingleJoinPointTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class SingleJoinPointTests extends soot.jimple.infoflow.test.junit.SingleJoinPointTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/SourceSinkTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class SourceSinkTests extends soot.jimple.infoflow.test.junit.SourceSinkTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/StaticTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class StaticTests extends soot.jimple.infoflow.test.junit.StaticTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/StringTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class StringTests extends soot.jimple.infoflow.test.junit.StringTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/ThreadTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class ThreadTests extends soot.jimple.infoflow.test.junit.ThreadTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/TypeTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class TypeTests extends soot.jimple.infoflow.test.junit.TypeTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/soot-infoflow/test/soot/jimple/infoflow/test/junit/forward/VectorTests.java:
--------------------------------------------------------------------------------
1 | package soot.jimple.infoflow.test.junit.forward;
2 |
3 | import soot.jimple.infoflow.AbstractInfoflow;
4 | import soot.jimple.infoflow.Infoflow;
5 |
6 | public class VectorTests extends soot.jimple.infoflow.test.junit.VectorTests {
7 |
8 | @Override
9 | protected AbstractInfoflow createInfoflowInstance() {
10 | return new Infoflow(null, false, null);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------