diff --git a/infer/src/quandary/JavaTrace.ml b/infer/src/quandary/JavaTrace.ml index ccb840bcc..ecee33cb1 100644 --- a/infer/src/quandary/JavaTrace.ml +++ b/infer/src/quandary/JavaTrace.ml @@ -59,7 +59,7 @@ module JavaSource = struct | Procname.Java pname -> begin match Procname.java_get_class_name pname, Procname.java_get_method pname with - | "android.content.Intent", ("parseUri" | "parseIntent") -> + | "android.content.Intent", ("getStringExtra" | "parseUri" | "parseIntent") -> Some (make Intent site) | "android.content.SharedPreferences", "getString" -> Some (make PrivateData site) @@ -162,6 +162,23 @@ module JavaSink = struct taint_nth 0 Intent site ~report_reachable:true | "android.app.Activity", ("startActivityFromChild" | "startActivityFromFragment") -> taint_nth 1 Intent site ~report_reachable:true + | "android.content.Intent", + ("fillIn" | + "makeMainSelectorActivity" | + "parseIntent" | + "parseUri" | + "replaceExtras" | + "setAction" | + "setClassName" | + "setData" | + "setDataAndNormalize" | + "setDataAndType" | + "setDataAndTypeAndNormalize" | + "setPackage" | + "setSelector" | + "setType" | + "setTypeAndNormalize") -> + taint_all Intent site ~report_reachable:true | "android.util.Log", ("e" | "println" | "w" | "wtf") -> taint_all Logging site ~report_reachable:true | "com.facebook.infer.builtins.InferTaint", "inferSensitiveSink" -> diff --git a/infer/tests/codetoanalyze/java/quandary/Intents.java b/infer/tests/codetoanalyze/java/quandary/Intents.java index 5af9d94be..9a591b637 100644 --- a/infer/tests/codetoanalyze/java/quandary/Intents.java +++ b/infer/tests/codetoanalyze/java/quandary/Intents.java @@ -13,8 +13,13 @@ import java.io.IOException; import java.net.URISyntaxException; import android.app.Activity; +import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.net.Uri; +import android.os.Bundle; + +import com.facebook.infer.builtins.InferTaint; import org.xmlpull.v1.XmlPullParserException; @@ -22,7 +27,7 @@ public class Intents { private native int rand(); - public void callAllSinksBad(Activity activity, String uri) throws + public void callAllActivitySinksBad(Activity activity, String uri) throws IOException, URISyntaxException, XmlPullParserException { Intent intent = null; @@ -52,4 +57,29 @@ public class Intents { activity.startService(intent); // 2 sinks * 15 sources = 30 expected reports } + public void callAllIntentSinksBad(Intent cleanIntent) throws + IOException, URISyntaxException, XmlPullParserException { + String taintedString = cleanIntent.getStringExtra(""); + Intent taintedIntent = Intent.parseUri(null, 0); + Resources taintedResources = (Resources) ((Object) taintedString); + Uri taintedUri = taintedIntent.getData(); + + Intent intent = new Intent(); + intent.fillIn(taintedIntent, 0); + intent.makeMainSelectorActivity(taintedString, null); + intent.parseIntent(taintedResources, null, null); + intent.parseUri(taintedString, 0); + intent.replaceExtras(taintedIntent); + intent.setAction(taintedString); + intent.setClassName(taintedString, null); + intent.setData(taintedUri); + intent.setDataAndNormalize(taintedUri); + intent.setDataAndType(taintedUri, null); + intent.setDataAndTypeAndNormalize(taintedUri, null); + intent.setPackage(taintedString); + intent.setSelector(taintedIntent); + intent.setType(taintedString); + intent.setTypeAndNormalize(taintedString); // 15 sinks, 15 expected reports + } + } diff --git a/infer/tests/codetoanalyze/java/quandary/issues.exp b/infer/tests/codetoanalyze/java/quandary/issues.exp index 1c225cde7..655fd949d 100644 --- a/infer/tests/codetoanalyze/java/quandary/issues.exp +++ b/infer/tests/codetoanalyze/java/quandary/issues.exp @@ -53,36 +53,51 @@ codetoanalyze/java/quandary/Fields.java, void Fields.viaNestedFieldBad2(), 4, QU codetoanalyze/java/quandary/FlowSensitivity.java, void FlowSensitivity.callSourceAndSinkBad1(FlowSensitivity$Obj), 2, QUANDARY_TAINT_ERROR, [return from Object InferTaint.inferSecretSource(),return from void FlowSensitivity.sourceAndSink(FlowSensitivity$Obj),call to void InferTaint.inferSensitiveSink(Object)] codetoanalyze/java/quandary/FlowSensitivity.java, void FlowSensitivity.callSourceAndSinkBad2(FlowSensitivity$Obj), 2, QUANDARY_TAINT_ERROR, [return from Object InferTaint.inferSecretSource(),call to void FlowSensitivity.sourceAndSink(FlowSensitivity$Obj),call to void InferTaint.inferSensitiveSink(Object)] codetoanalyze/java/quandary/FlowSensitivity.java, void FlowSensitivity.interproceduralFlowSensitivityBad(FlowSensitivity$Obj), 2, QUANDARY_TAINT_ERROR, [return from Object InferTaint.inferSecretSource(),return from void FlowSensitivity.returnSource(FlowSensitivity$Obj),call to void FlowSensitivity.callSink(FlowSensitivity$Obj),call to void InferTaint.inferSensitiveSink(Object)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 13, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to boolean ContextWrapper.bindService(Intent,ServiceConnection,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 13, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to boolean ContextWrapper.bindService(Intent,ServiceConnection,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 14, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendBroadcast(Intent)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 14, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendBroadcast(Intent)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 15, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendBroadcastAsUser(Intent,UserHandle)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 15, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendBroadcastAsUser(Intent,UserHandle)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 16, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendOrderedBroadcast(Intent,String)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 16, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendOrderedBroadcast(Intent,String)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 17, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendStickyBroadcast(Intent)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 17, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendStickyBroadcast(Intent)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 18, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendStickyBroadcastAsUser(Intent,UserHandle)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 18, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendStickyBroadcastAsUser(Intent,UserHandle)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 19, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendStickyOrderedBroadcast(Intent,BroadcastReceiver,Handler,int,String,Bundle)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 19, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendStickyOrderedBroadcast(Intent,BroadcastReceiver,Handler,int,String,Bundle)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 20, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendStickyOrderedBroadcastAsUser(Intent,UserHandle,BroadcastReceiver,Handler,int,String,Bundle)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 20, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendStickyOrderedBroadcastAsUser(Intent,UserHandle,BroadcastReceiver,Handler,int,String,Bundle)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 21, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivities(android.content.Intent[])] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 21, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivities(android.content.Intent[])] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 22, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivity(Intent)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 22, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivity(Intent)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 23, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivityForResult(Intent,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 23, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivityForResult(Intent,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 24, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to boolean Activity.startActivityIfNeeded(Intent,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 24, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to boolean Activity.startActivityIfNeeded(Intent,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 25, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivityFromChild(Activity,Intent,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 25, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivityFromChild(Activity,Intent,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 26, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivityFromFragment(Fragment,Intent,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 26, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivityFromFragment(Fragment,Intent,int)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 27, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to ComponentName ContextWrapper.startService(Intent)] -codetoanalyze/java/quandary/Intents.java, void Intents.callAllSinksBad(Activity,String), 27, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to ComponentName ContextWrapper.startService(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 13, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to boolean ContextWrapper.bindService(Intent,ServiceConnection,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 13, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to boolean ContextWrapper.bindService(Intent,ServiceConnection,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 14, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendBroadcast(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 14, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendBroadcast(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 15, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendBroadcastAsUser(Intent,UserHandle)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 15, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendBroadcastAsUser(Intent,UserHandle)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 16, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendOrderedBroadcast(Intent,String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 16, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendOrderedBroadcast(Intent,String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 17, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendStickyBroadcast(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 17, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendStickyBroadcast(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 18, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendStickyBroadcastAsUser(Intent,UserHandle)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 18, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendStickyBroadcastAsUser(Intent,UserHandle)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 19, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendStickyOrderedBroadcast(Intent,BroadcastReceiver,Handler,int,String,Bundle)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 19, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendStickyOrderedBroadcast(Intent,BroadcastReceiver,Handler,int,String,Bundle)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 20, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void ContextWrapper.sendStickyOrderedBroadcastAsUser(Intent,UserHandle,BroadcastReceiver,Handler,int,String,Bundle)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 20, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void ContextWrapper.sendStickyOrderedBroadcastAsUser(Intent,UserHandle,BroadcastReceiver,Handler,int,String,Bundle)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 21, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivities(android.content.Intent[])] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 21, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivities(android.content.Intent[])] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 22, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivity(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 22, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivity(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 23, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivityForResult(Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 23, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivityForResult(Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 24, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to boolean Activity.startActivityIfNeeded(Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 24, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to boolean Activity.startActivityIfNeeded(Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 25, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivityFromChild(Activity,Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 25, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivityFromChild(Activity,Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 26, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Activity.startActivityFromFragment(Fragment,Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 26, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to void Activity.startActivityFromFragment(Fragment,Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 27, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to ComponentName ContextWrapper.startService(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllActivitySinksBad(Activity,String), 27, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet),call to ComponentName ContextWrapper.startService(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 8, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to int Intent.fillIn(Intent,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 9, QUANDARY_TAINT_ERROR, [return from String Intent.getStringExtra(String),call to Intent Intent.makeMainSelectorActivity(String,String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 10, QUANDARY_TAINT_ERROR, [return from String Intent.getStringExtra(String),call to Intent Intent.parseIntent(Resources,XmlPullParser,AttributeSet)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 11, QUANDARY_TAINT_ERROR, [return from String Intent.getStringExtra(String),call to Intent Intent.parseUri(String,int)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 12, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to Intent Intent.replaceExtras(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 13, QUANDARY_TAINT_ERROR, [return from String Intent.getStringExtra(String),call to Intent Intent.setAction(String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 14, QUANDARY_TAINT_ERROR, [return from String Intent.getStringExtra(String),call to Intent Intent.setClassName(String,String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 15, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to Intent Intent.setData(Uri)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 16, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to Intent Intent.setDataAndNormalize(Uri)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 17, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to Intent Intent.setDataAndType(Uri,String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 18, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to Intent Intent.setDataAndTypeAndNormalize(Uri,String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 19, QUANDARY_TAINT_ERROR, [return from String Intent.getStringExtra(String),call to Intent Intent.setPackage(String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 20, QUANDARY_TAINT_ERROR, [return from Intent Intent.parseUri(String,int),call to void Intent.setSelector(Intent)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 21, QUANDARY_TAINT_ERROR, [return from String Intent.getStringExtra(String),call to Intent Intent.setType(String)] +codetoanalyze/java/quandary/Intents.java, void Intents.callAllIntentSinksBad(Intent), 22, QUANDARY_TAINT_ERROR, [return from String Intent.getStringExtra(String),call to Intent Intent.setTypeAndNormalize(String)] codetoanalyze/java/quandary/Interprocedural.java, void Interprocedural.FP_divergenceInCallee(), 3, QUANDARY_TAINT_ERROR, [return from Object InferTaint.inferSecretSource(),call to void InferTaint.inferSensitiveSink(Object)] codetoanalyze/java/quandary/Interprocedural.java, void Interprocedural.FP_reassignInCallee(), 4, QUANDARY_TAINT_ERROR, [return from Object InferTaint.inferSecretSource(),call to void InferTaint.inferSensitiveSink(Object)] codetoanalyze/java/quandary/Interprocedural.java, void Interprocedural.FP_trackParamsOk(), 1, QUANDARY_TAINT_ERROR, [return from Object InferTaint.inferSecretSource(),return from Object Interprocedural.returnSourceConditional(boolean),call to void InferTaint.inferSensitiveSink(Object)]