From 56709b4ccbea999befff75f61f976316c72ad058 Mon Sep 17 00:00:00 2001 From: Jeremy Dubreil Date: Sat, 6 Oct 2018 08:33:50 -0700 Subject: [PATCH] [infer] the bug hash should also consider the anonymous classes in the qualifier Reviewed By: jberdine Differential Revision: D10229005 fbshipit-source-id: 5edbef6e7 --- infer/src/backend/InferPrint.ml | 5 +- infer/tests/build_systems/ant/issues.exp | 2 +- .../tests/codetoanalyze/java/infer/issues.exp | 2 +- .../codetoanalyze/java/quandary/issues.exp | 52 +++++++++---------- 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/infer/src/backend/InferPrint.ml b/infer/src/backend/InferPrint.ml index 923cf76fe..a20b4ef03 100644 --- a/infer/src/backend/InferPrint.ml +++ b/infer/src/backend/InferPrint.ml @@ -55,8 +55,9 @@ let compute_hash ~(severity : string) ~(bug_type : string) ~(proc_name : Typ.Pro let hashable_procedure_name = Typ.Procname.hashable_name proc_name in let location_independent_qualifier = (* Removing the line,column, and infer temporary variable (e.g., n$67) information from the - error message to make the hash invariant when moving the source code in the file *) - Str.global_replace (Str.regexp "\\(line \\|column \\|n\\$\\)[0-9]+") "_" qualifier + error message as well as the index of the annonymmous class to make the hash invariant + when moving the source code in the file *) + Str.global_replace (Str.regexp "\\(line \\|column \\|\\$\\)[0-9]+") "$_" qualifier in Utils.better_hash (severity, bug_type, hashable_procedure_name, base_filename, location_independent_qualifier) diff --git a/infer/tests/build_systems/ant/issues.exp b/infer/tests/build_systems/ant/issues.exp index ee4b138af..a31225ca5 100644 --- a/infer/tests/build_systems/ant/issues.exp +++ b/infer/tests/build_systems/ant/issues.exp @@ -151,8 +151,8 @@ codetoanalyze/java/infer/ReaderLeaks.java, codetoanalyze.java.infer.ReaderLeaks. codetoanalyze/java/infer/ReaderLeaks.java, codetoanalyze.java.infer.ReaderLeaks.readerNotClosedAfterRead():void, 6, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure readerNotClosedAfterRead(),Skipping FileReader(...): unknown method,exception java.io.IOException] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.activityObtainTypedArrayAndLeak(android.app.Activity):void, 2, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure activityObtainTypedArrayAndLeak(...),start of procedure ignore(...),return from a call to void ResourceLeaks.ignore(TypedArray)] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.contextObtainTypedArrayAndLeak(android.content.Context):void, 2, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure contextObtainTypedArrayAndLeak(...),start of procedure ignore(...),return from a call to void ResourceLeaks.ignore(TypedArray)] -codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.copyFileLeak(java.io.File,java.io.File):void, 9, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure copyFileLeak(...),Skipping transferTo(...): unknown method,Taking true branch,exception java.io.IOException] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.copyFileLeak(java.io.File,java.io.File):void, 9, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure copyFileLeak(...),exception java.io.FileNotFoundException] +codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.copyFileLeak(java.io.File,java.io.File):void, 9, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure copyFileLeak(...),Skipping transferTo(...): unknown method,Taking true branch,exception java.io.IOException] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.deflaterLeak():void, 1, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure deflaterLeak()] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.fileInputStreamNotClosedAfterRead():void, 6, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure fileInputStreamNotClosedAfterRead(),exception java.io.IOException] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.fileOutputStreamNotClosed():void, 1, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure fileOutputStreamNotClosed()] diff --git a/infer/tests/codetoanalyze/java/infer/issues.exp b/infer/tests/codetoanalyze/java/infer/issues.exp index 86a53a926..c39404ffb 100644 --- a/infer/tests/codetoanalyze/java/infer/issues.exp +++ b/infer/tests/codetoanalyze/java/infer/issues.exp @@ -158,8 +158,8 @@ codetoanalyze/java/infer/ReaderLeaks.java, codetoanalyze.java.infer.ReaderLeaks. codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.NoResourceLeakWarningAfterCheckState(java.io.File,int):void, 2, PRECONDITION_NOT_MET, no_bucket, WARNING, [start of procedure NoResourceLeakWarningAfterCheckState(...),Taking false branch] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.activityObtainTypedArrayAndLeak(android.app.Activity):void, 2, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure activityObtainTypedArrayAndLeak(...),start of procedure ignore(...),return from a call to void ResourceLeaks.ignore(TypedArray)] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.contextObtainTypedArrayAndLeak(android.content.Context):void, 2, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure contextObtainTypedArrayAndLeak(...),start of procedure ignore(...),return from a call to void ResourceLeaks.ignore(TypedArray)] -codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.copyFileLeak(java.io.File,java.io.File):void, 9, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure copyFileLeak(...),Skipping transferTo(...): unknown method,Taking true branch,exception java.io.IOException] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.copyFileLeak(java.io.File,java.io.File):void, 9, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure copyFileLeak(...),exception java.io.FileNotFoundException] +codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.copyFileLeak(java.io.File,java.io.File):void, 9, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure copyFileLeak(...),Skipping transferTo(...): unknown method,Taking true branch,exception java.io.IOException] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.deflaterLeak():void, 1, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure deflaterLeak()] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.fileInputStreamNotClosedAfterRead():void, 6, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure fileInputStreamNotClosedAfterRead(),exception java.io.IOException] codetoanalyze/java/infer/ResourceLeaks.java, codetoanalyze.java.infer.ResourceLeaks.fileOutputStreamNotClosed():void, 1, RESOURCE_LEAK, no_bucket, ERROR, [start of procedure fileOutputStreamNotClosed()] diff --git a/infer/tests/codetoanalyze/java/quandary/issues.exp b/infer/tests/codetoanalyze/java/quandary/issues.exp index 287176957..3eba0d9ff 100644 --- a/infer/tests/codetoanalyze/java/quandary/issues.exp +++ b/infer/tests/codetoanalyze/java/quandary/issues.exp @@ -135,46 +135,46 @@ codetoanalyze/java/quandary/Interprocedural.java, codetoanalyze.java.quandary.In codetoanalyze/java/quandary/Interprocedural.java, codetoanalyze.java.quandary.Interprocedural.returnSourceViaParameter2Bad(codetoanalyze.java.quandary.Interprocedural$Obj,codetoanalyze.java.quandary.Interprocedural$Obj):void, 3, QUANDARY_TAINT_ERROR, no_bucket, ERROR, [Return from Object InferTaint.inferSecretSource(),Call to void InferTaint.inferSensitiveSink(Object) with tainted index 0] codetoanalyze/java/quandary/Interprocedural.java, codetoanalyze.java.quandary.Interprocedural.setGlobalThenCallSinkBad():void, 2, QUANDARY_TAINT_ERROR, no_bucket, ERROR, [Return from Object InferTaint.inferSecretSource(),Call to void Interprocedural.callSinkOnGlobal(),Call to void InferTaint.inferSensitiveSink(Object) with tainted index 0] codetoanalyze/java/quandary/Interprocedural.java, codetoanalyze.java.quandary.Interprocedural.singlePassthroughBad():void, 3, QUANDARY_TAINT_ERROR, no_bucket, ERROR, [Return from Object InferTaint.inferSecretSource(),Call to void InferTaint.inferSensitiveSink(Object) with tainted index 0] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getVoiceMailNumber(),Call to int Log.e(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getSpeed(),Call to int Log.e(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getDeviceId(),Call to int Log.e(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSimSerialNumber(),Call to int Log.e(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getLine1Number(),Call to int Log.e(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getAltitude(),Call to int Log.e(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSubscriberId(),Call to int Log.e(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSimSerialNumber(),Call to int Log.e(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getVoiceMailNumber(),Call to int Log.e(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLongitude(),Call to int Log.e(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getDeviceId(),Call to int Log.e(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getBearing(),Call to int Log.e(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getSpeed(),Call to int Log.e(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLatitude(),Call to int Log.e(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSubscriberId(),Call to int Log.println(int,String,String) with tainted index 2] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getDeviceId(),Call to int Log.println(int,String,String) with tainted index 2] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLongitude(),Call to int Log.println(int,String,String) with tainted index 2] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getLine1Number(),Call to int Log.println(int,String,String) with tainted index 2] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getAltitude(),Call to int Log.println(int,String,String) with tainted index 2] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSubscriberId(),Call to int Log.e(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 36, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getAltitude(),Call to int Log.e(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getVoiceMailNumber(),Call to int Log.println(int,String,String) with tainted index 2] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSimSerialNumber(),Call to int Log.println(int,String,String) with tainted index 2] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getBearing(),Call to int Log.println(int,String,String) with tainted index 2] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLatitude(),Call to int Log.println(int,String,String) with tainted index 2] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getLine1Number(),Call to int Log.println(int,String,String) with tainted index 2] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLongitude(),Call to int Log.println(int,String,String) with tainted index 2] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getAltitude(),Call to int Log.println(int,String,String) with tainted index 2] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getSpeed(),Call to int Log.println(int,String,String) with tainted index 2] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSimSerialNumber(),Call to int Log.println(int,String,String) with tainted index 2] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSimSerialNumber(),Call to int Log.w(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSubscriberId(),Call to int Log.w(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getVoiceMailNumber(),Call to int Log.w(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getAltitude(),Call to int Log.w(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLatitude(),Call to int Log.w(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getBearing(),Call to int Log.w(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLongitude(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getDeviceId(),Call to int Log.println(int,String,String) with tainted index 2] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSubscriberId(),Call to int Log.println(int,String,String) with tainted index 2] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 37, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLatitude(),Call to int Log.println(int,String,String) with tainted index 2] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getLine1Number(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLatitude(),Call to int Log.w(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getDeviceId(),Call to int Log.w(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getSpeed(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLongitude(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSimSerialNumber(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getAltitude(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSubscriberId(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getBearing(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 38, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getVoiceMailNumber(),Call to int Log.w(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getAltitude(),Call to int Log.wtf(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getDeviceId(),Call to int Log.wtf(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getVoiceMailNumber(),Call to int Log.wtf(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getSpeed(),Call to int Log.wtf(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSimSerialNumber(),Call to int Log.wtf(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getLine1Number(),Call to int Log.wtf(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getBearing(),Call to int Log.wtf(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLongitude(),Call to int Log.wtf(String,String) with tainted index 1] +codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getSpeed(),Call to int Log.wtf(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSubscriberId(),Call to int Log.wtf(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getSimSerialNumber(),Call to int Log.wtf(String,String) with tainted index 1] codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getLatitude(),Call to int Log.wtf(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from double Location.getAltitude(),Call to int Log.wtf(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from float Location.getBearing(),Call to int Log.wtf(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getDeviceId(),Call to int Log.wtf(String,String) with tainted index 1] -codetoanalyze/java/quandary/LoggingPrivateData.java, codetoanalyze.java.quandary.LoggingPrivateData.logAllSourcesBad(android.location.Location,android.telephony.TelephonyManager):void, 39, LOGGING_PRIVATE_DATA, no_bucket, ERROR, [Return from String TelephonyManager.getLine1Number(),Call to int Log.wtf(String,String) with tainted index 1] codetoanalyze/java/quandary/Recursion.java, codetoanalyze.java.quandary.Recursion.callSinkThenDivergeBad():void, 1, QUANDARY_TAINT_ERROR, no_bucket, ERROR, [Return from Object InferTaint.inferSecretSource(),Call to void Recursion.callSinkThenDiverge(Object) with tainted index 0,Call to void InferTaint.inferSensitiveSink(Object) with tainted index 0] codetoanalyze/java/quandary/Recursion.java, codetoanalyze.java.quandary.Recursion.safeRecursionCallSinkBad():void, 1, QUANDARY_TAINT_ERROR, no_bucket, ERROR, [Return from Object InferTaint.inferSecretSource(),Call to void Recursion.safeRecursionCallSink(int,Object) with tainted index 1,Call to void InferTaint.inferSensitiveSink(Object) with tainted index 0] codetoanalyze/java/quandary/Serialization.java, codetoanalyze.java.quandary.Serialization.taintedObjectInputStreamBad():java.lang.Object, 2, QUANDARY_TAINT_ERROR, no_bucket, ERROR, [Return from Object InferTaint.inferSecretSource(),Call to ObjectInputStream.(InputStream) with tainted index 1]