· 7 years ago · Jul 31, 2018, 02:28 PM
1public static void cipherUsageExampleUsingFieldWithStringConstant() throws java.security.GeneralSecurityException
2 {
3 javax.crypto.SecretKey r0;
4 javax.crypto.Cipher r1;
5 java.lang.String $r3, $r4, varReplacer32;
6 byte[] $r5;
7
8 nop;
9
10 varReplacer32 = "AES";
11
12 <main.DataFlowImprecisionExample: java.lang.String field> = varReplacer32;
13
14 r0 = staticinvoke <main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>();
15
16 $r3 = <main.DataFlowImprecisionExample: java.lang.String field>;
17
18 r1 = staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);
19
20 virtualinvoke r1.<javax.crypto.Cipher: void init(int,java.security.Key)>(1, r0);
21
22 $r4 = "";
23
24 $r5 = virtualinvoke $r4.<java.lang.String: byte[] getBytes()>();
25
26 virtualinvoke r1.<javax.crypto.Cipher: byte[] doFinal(byte[])>($r5);
27
28 return;
29 }
30
31Forward solving query: AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher]
32Backward solving query: BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))
33Backward solving query: BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))
34AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Nodes: 5
35AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Field Aut: 5
36AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Field Aut (failed Additions): 0
37AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Field Aut (failed Direct Additions): 0
38AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Call Aut: 5
39AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Call Aut (failed Additions): 4
40Total number of rules: 8
41========================
42AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher]
43========================
44class boomerang.WeightedBoomerang$7
45All reachable states
46(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) (cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) (cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) (cipherUsageExampleUsingFieldWithStringConstant return,r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))
47Field WPDS (#Rules: 4)
48 NormalRules:
49 <(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>(ONE)
50 <(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>-><(cipherUsageExampleUsingFieldWithStringConstant return,r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>(ONE)
51 <(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>(ONE)
52 <(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>(ONE)
53 PopRules:
54
55 PushRules:
56
57digraph {
58 "(cipherUsageExampleUsingFieldWithStringConstant $r4 = ,r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
59 "(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
60 "(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
61 "(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
62 "(cipherUsageExampleUsingFieldWithStringConstant return,r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
63}
64Transitions: 5 Nested: 0
65End nesting
66
67Call WPDS (#Rules: 4)
68 NormalRules:
69 <r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>-><r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant return>(Weight: [2 -> 2 with [<javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>], -1 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[])>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: int update(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[],int,int)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[])>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[],int)>], 0 -> ERR with [<javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>, <javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[])>, <javax.crypto.Cipher: int update(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[],int,int)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[],int)>], 1 -> 2 with [<javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>], 3 -> 2 with [<javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int)>]])
70 <r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0)>-><r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">(Weight: [2 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>], 1 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>], -1 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[])>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: int update(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[],int,int)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[])>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[],int)>], 3 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>], 0 -> 1 with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>]])
71 <r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">-><r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>(ONE)
72 <r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>-><r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>(ONE)
73 PopRules:
74
75 PushRules:
76
77digraph {
78 "ENTRY: r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)" -> "ENTRY: r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)"[label="cipherUsageExampleUsingFieldWithStringConstant $r4 = W: Weight: [-1 -> 1]\ncipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0) W: Weight: [-1 -> 0 with [<javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>]]\ncipherUsageExampleUsingFieldWithStringConstant $r4.getBytes() W: Weight: [-1 -> 1]\ncipherUsageExampleUsingFieldWithStringConstant return W: Weight: [-1 -> 2]\ncipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5) W: Weight: [-1 -> 1]"];
79}
80Transitions: 5 Nested: 0
81End nesting
82
83===== end === class boomerang.WeightedBoomerang$7
84<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
85(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 {})=Weight: [-1 -> 1]
86 (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 {})=Weight: [-1 -> 0 with [<javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>]]
87 (cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 {})=Weight: [-1 -> 1]
88 (cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r1 {})=Weight: [-1 -> 1]
89 (cipherUsageExampleUsingFieldWithStringConstant return,r1 {})=Weight: [-1 -> 2]
90Forward solving query: AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher]
91AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Nodes: 5
92AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Field Aut: 5
93AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Field Aut (failed Additions): 0
94AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Field Aut (failed Direct Additions): 0
95AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Call Aut: 5
96AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher] Call Aut (failed Additions): 4
97Total number of rules: 8
98========================
99AnalysisSeed [ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) with spec Cipher]
100========================
101class boomerang.WeightedBoomerang$7
102All reachable states
103(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) (cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) (cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) (cipherUsageExampleUsingFieldWithStringConstant return,r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)) (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))
104Field WPDS (#Rules: 4)
105 NormalRules:
106 <(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>(ONE)
107 <(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>-><(cipherUsageExampleUsingFieldWithStringConstant return,r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>(ONE)
108 <(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>(ONE)
109 <(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3));*>(ONE)
110 PopRules:
111
112 PushRules:
113
114digraph {
115 "(cipherUsageExampleUsingFieldWithStringConstant $r4 = ,r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
116 "(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
117 "(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
118 "(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
119 "(cipherUsageExampleUsingFieldWithStringConstant return,r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))"[label="{} W: ONE"];
120}
121Transitions: 5 Nested: 0
122End nesting
123
124Call WPDS (#Rules: 4)
125 NormalRules:
126 <r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>-><r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant return>(Weight: [2 -> 2 with [<javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>], -1 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[])>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: int update(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[],int,int)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[])>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[],int)>], 0 -> ERR with [<javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>, <javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[])>, <javax.crypto.Cipher: int update(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[],int,int)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[],int)>], 1 -> 2 with [<javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>], 3 -> 2 with [<javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int)>]])
127 <r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0)>-><r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">(Weight: [2 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>], 1 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>], -1 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal(byte[])>, <javax.crypto.Cipher: byte[] doFinal()>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: byte[] doFinal(byte[],int,int)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[],int)>, <javax.crypto.Cipher: int doFinal(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[])>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: int update(java.nio.ByteBuffer,java.nio.ByteBuffer)>, <javax.crypto.Cipher: byte[] update(byte[],int,int)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[])>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: int doFinal(byte[],int,int,byte[])>, <javax.crypto.Cipher: int doFinal(byte[],int)>, <javax.crypto.Cipher: int update(byte[],int,int,byte[],int)>], 3 -> ERR with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>], 0 -> 1 with [<javax.crypto.Cipher: void init(int,java.security.cert.Certificate)>, <javax.crypto.Cipher: void init(int,java.security.Key)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.SecureRandom)>, <javax.crypto.Cipher: void init(int,java.security.Key,java.security.AlgorithmParameters,java.security.SecureRandom)>, <javax.crypto.Cipher: void init(int,java.security.cert.Certificate,java.security.SecureRandom)>]])
128 <r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">-><r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>(ONE)
129 <r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>-><r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>(ONE)
130 PopRules:
131
132 PushRules:
133
134digraph {
135 "ENTRY: r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)" -> "ENTRY: r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)"[label="cipherUsageExampleUsingFieldWithStringConstant $r4 = W: Weight: [-1 -> 1]\ncipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0) W: Weight: [-1 -> 0 with [<javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>]]\ncipherUsageExampleUsingFieldWithStringConstant $r4.getBytes() W: Weight: [-1 -> 1]\ncipherUsageExampleUsingFieldWithStringConstant return W: Weight: [-1 -> 2]\ncipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5) W: Weight: [-1 -> 1]"];
136}
137Transitions: 5 Nested: 0
138End nesting
139
140===== end === class boomerang.WeightedBoomerang$7
141<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
142(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r1 {})=Weight: [-1 -> 1]
143 (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 {})=Weight: [-1 -> 0 with [<javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String,java.lang.String)>, <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>]]
144 (cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r1 {})=Weight: [-1 -> 1]
145 (cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r1 {})=Weight: [-1 -> 1]
146 (cipherUsageExampleUsingFieldWithStringConstant return,r1 {})=Weight: [-1 -> 2]
147Backward solving query: BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
148Forward solving query: ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())
149BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Nodes: 6
150BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut: 6
151BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut (failed Additions): 0
152BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut (failed Direct Additions): 0
153BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Call Aut: 7
154BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Call Aut (failed Additions): 6
155ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) Nodes: 8
156ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) Field Aut: 8
157ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) Field Aut (failed Additions): 0
158ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) Field Aut (failed Direct Additions): 0
159ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) Call Aut: 8
160ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) Call Aut (failed Additions): 5
161Total number of rules: 24
162========================
163BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
164========================
165class boomerang.WeightedBoomerang$5
166All reachable states
167(getKey r0.init(128),virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>() (DataFlowImprecisionExample.getKey)) (cipherUsageExampleUsingFieldWithStringConstant getKey(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (getKey return $r1,$r1 (DataFlowImprecisionExample.getKey)) (cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey))
168Field WPDS (#Rules: 5)
169 NormalRules:
170 <(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey));*>-><(getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey));*>
171 <(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
172 <(getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey));*>-><(getKey r0.init(128),virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>() (DataFlowImprecisionExample.getKey));*>
173 <(cipherUsageExampleUsingFieldWithStringConstant getKey(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey));*>
174 <(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant getKey(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
175 PopRules:
176
177 PushRules:
178
179digraph {
180 "(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
181 "(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
182 "(cipherUsageExampleUsingFieldWithStringConstant getKey(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
183 "(getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
184 "(getKey r0.init(128),virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>() (DataFlowImprecisionExample.getKey))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
185 "(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
186}
187Transitions: 6 Nested: 0
188End nesting
189
190Call WPDS (#Rules: 5)
191 NormalRules:
192 <$r1 (DataFlowImprecisionExample.getKey);getKey return $r1>-><$r1 (DataFlowImprecisionExample.getKey);getKey r0.generateKey()>
193 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getInstance($r3)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>>
194 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getKey()>
195 <$r1 (DataFlowImprecisionExample.getKey);getKey r0.generateKey()>-><virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>() (DataFlowImprecisionExample.getKey);getKey r0.init(128)>
196 PopRules:
197
198 PushRules:
199 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getKey()>-><$r1 (DataFlowImprecisionExample.getKey);getKey return $r1.cipherUsageExampleUsingFieldWithStringConstant <main.DataFlowImprecisionExample: java.lang.String field> = varReplacer32>()
200digraph {
201 "$r1 (DataFlowImprecisionExample.getKey) getKey return $r1" -> "ENTRY: r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant <main.DataFlowImprecisionExample: java.lang.String field> = varReplacer32 W: "];
202 "$r1 (DataFlowImprecisionExample.getKey)" -> "$r1 (DataFlowImprecisionExample.getKey) getKey return $r1"[label="getKey return $r1 W: \ngetKey r0.generateKey() W: "];
203 "ENTRY: r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant getInstance($r3) W: \ncipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field> W: \ncipherUsageExampleUsingFieldWithStringConstant getKey() W: "];
204 "virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>() (DataFlowImprecisionExample.getKey)" -> "$r1 (DataFlowImprecisionExample.getKey) getKey return $r1"[label="getKey r0.init(128) W: "];
205}
206Transitions: 7 Nested: 0
207End nesting
208
209===== end === class boomerang.WeightedBoomerang$5
210<main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
211(getKey r0.init(128),virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>() {})=
212 (getKey return $r1,$r1 {})=
213 (getKey r0.generateKey(),$r1 {})=
214<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
215(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 {})=
216 (cipherUsageExampleUsingFieldWithStringConstant getKey(),r0 {})=
217 (cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 {})=
218========================
219ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())
220========================
221class boomerang.WeightedBoomerang$7
222All reachable states
223(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) (cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
224(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
225Field WPDS (#Rules: 7)
226 NormalRules:
227 <(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
228 <(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>());*>-><(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
229 <(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
230 <(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
231 <(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
232 <(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
233 <(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
234 PopRules:
235
236 PushRules:
237
238digraph {
239 "(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: "];
240 "(cipherUsageExampleUsingFieldWithStringConstant $r4 = ,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: "];
241 "(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: "];
242 "(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: "];
243 "(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: "];
244 "(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: "];
245 "(cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: "];
246 "(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: "];
247}
248Transitions: 8 Nested: 0
249End nesting
250
251Call WPDS (#Rules: 7)
252 NormalRules:
253 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getInstance($r3)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0)>
254 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getInstance($r3)>
255 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">
256 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant return>
257 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>
258 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>
259 PopRules:
260 <$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>();getKey return $r1>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)>()
261 PushRules:
262
263digraph {
264 "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()" -> "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()"[label="getKey return $r1 W: "];
265 "r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()"[label="cipherUsageExampleUsingFieldWithStringConstant return W: \ncipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0) W: \ncipherUsageExampleUsingFieldWithStringConstant $r4 = W: \ncipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5) W: \ncipherUsageExampleUsingFieldWithStringConstant $r4.getBytes() W: \ncipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field> W: \ncipherUsageExampleUsingFieldWithStringConstant getInstance($r3) W: "];
266}
267Transitions: 8 Nested: 0
268End nesting
269
270===== end === class boomerang.WeightedBoomerang$7
271<main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
272(getKey return $r1,$r1 {})=
273<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
274(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 {})=
275 (cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 {})=
276 (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 {})=
277 (cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 {})=
278 (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 {})=
279 (cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 {})=
280 (cipherUsageExampleUsingFieldWithStringConstant return,r0 {})=
281Backward solving query: BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
282BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Nodes: 8
283BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut: 8
284BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut (failed Additions): 1
285BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut (failed Direct Additions): 0
286BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Call Aut: 11
287BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Call Aut (failed Additions): 12
288Total number of rules: 16
289========================
290BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
291========================
292class boomerang.WeightedBoomerang$5
293All reachable states
294(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (<clinit> return,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>) (getKey r0.generateKey(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>) (<clinit> registerNatives(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>) (getKey return $r1,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>) (getKey getInstance("AES"),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>) (cipherUsageExampleUsingFieldWithStringConstant getKey(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)
295(getKey r0.init(128),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)
296Field WPDS (#Rules: 8)
297 NormalRules:
298 <(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant getKey(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>
299 <(getKey return $r1,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>-><(getKey r0.generateKey(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>
300 <(getKey getInstance("AES"),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>-><(<clinit> return,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>
301 <(<clinit> return,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>-><(<clinit> registerNatives(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>
302 <(<clinit> registerNatives(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>-><(<clinit> return,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>
303 <(getKey r0.generateKey(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>-><(getKey r0.init(128),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>
304 <(cipherUsageExampleUsingFieldWithStringConstant getKey(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>-><(getKey return $r1,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>
305 <(getKey r0.init(128),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>-><(getKey getInstance("AES"),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>);*>
306 PopRules:
307
308 PushRules:
309
310digraph {
311 "(<clinit> registerNatives(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
312 "(<clinit> return,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
313 "(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
314 "(cipherUsageExampleUsingFieldWithStringConstant getKey(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
315 "(getKey getInstance(AES),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
316 "(getKey r0.generateKey(),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
317 "(getKey r0.init(128),StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
318 "(getKey return $r1,StaticField: <main.DataFlowImprecisionExample: java.lang.String field>)" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
319}
320Transitions: 8 Nested: 0
321End nesting
322
323Call WPDS (#Rules: 8)
324 NormalRules:
325 <$r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>>-><StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;cipherUsageExampleUsingFieldWithStringConstant getKey()>
326 <StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;getKey return $r1>-><StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;getKey r0.generateKey()>
327 <StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;getKey r0.init(128)>-><StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;getKey getInstance("AES")>
328 <StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;getKey r0.generateKey()>-><StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;getKey r0.init(128)>
329 <StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;<clinit> return>-><StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;<clinit> registerNatives()>
330 PopRules:
331
332 PushRules:
333 <StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;getKey getInstance("AES")>-><StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;<clinit> return.getKey nop>()
334 <StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;cipherUsageExampleUsingFieldWithStringConstant getKey()>-><StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;getKey return $r1.cipherUsageExampleUsingFieldWithStringConstant <main.DataFlowImprecisionExample: java.lang.String field> = varReplacer32>()
335 <StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;<clinit> registerNatives()>-><StaticField: <main.DataFlowImprecisionExample: java.lang.String field>;<clinit> return.<clinit> nop>()
336digraph {
337 "ENTRY: $r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: $r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field> W: "];
338 "ENTRY: $r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "StaticField: <main.DataFlowImprecisionExample: java.lang.String field>"[label="cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field> W: "];
339 "StaticField: <main.DataFlowImprecisionExample: java.lang.String field> <clinit> return" -> "StaticField: <main.DataFlowImprecisionExample: java.lang.String field> <clinit> return"[label="<clinit> nop W: "];
340 "StaticField: <main.DataFlowImprecisionExample: java.lang.String field> <clinit> return" -> "StaticField: <main.DataFlowImprecisionExample: java.lang.String field> getKey return $r1"[label="getKey nop W: "];
341 "StaticField: <main.DataFlowImprecisionExample: java.lang.String field> getKey return $r1" -> "ENTRY: $r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant <main.DataFlowImprecisionExample: java.lang.String field> = varReplacer32 W: "];
342 "StaticField: <main.DataFlowImprecisionExample: java.lang.String field> getKey return $r1" -> "StaticField: <main.DataFlowImprecisionExample: java.lang.String field>"[label="cipherUsageExampleUsingFieldWithStringConstant <main.DataFlowImprecisionExample: java.lang.String field> = varReplacer32 W: "];
343 "StaticField: <main.DataFlowImprecisionExample: java.lang.String field>" -> "ENTRY: $r3 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant getKey() W: "];
344 "StaticField: <main.DataFlowImprecisionExample: java.lang.String field>" -> "StaticField: <main.DataFlowImprecisionExample: java.lang.String field> <clinit> return"[label="<clinit> return W: \n<clinit> registerNatives() W: "];
345 "StaticField: <main.DataFlowImprecisionExample: java.lang.String field>" -> "StaticField: <main.DataFlowImprecisionExample: java.lang.String field> getKey return $r1"[label="getKey r0.generateKey() W: \ngetKey getInstance(AES) W: \ngetKey return $r1 W: \ngetKey r0.init(128) W: "];
346 "StaticField: <main.DataFlowImprecisionExample: java.lang.String field>" -> "StaticField: <main.DataFlowImprecisionExample: java.lang.String field>"[label="cipherUsageExampleUsingFieldWithStringConstant getKey() W: "];
347}
348Transitions: 11 Nested: 0
349End nesting
350
351===== end === class boomerang.WeightedBoomerang$5
352<main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
353(getKey return $r1,$r3 {})=
354 (getKey r0.generateKey(),$r3 {})=
355 (getKey r0.init(128),$r3 {})=
356 (getKey getInstance("AES"),$r3 {})=
357<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
358(cipherUsageExampleUsingFieldWithStringConstant getKey(),$r3 {})=
359 (cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,$r3 {})=
360<java.lang.Object: void <clinit>()>
361(<clinit> return,$r3 {})=
362 (<clinit> registerNatives(),$r3 {})=
363Backward solving query: BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
364Forward solving query: ForwardQuery: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))
365ForwardQuery: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)) Nodes: 7
366ForwardQuery: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)) Field Aut: 7
367ForwardQuery: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)) Field Aut (failed Additions): 1
368ForwardQuery: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)) Field Aut (failed Direct Additions): 0
369ForwardQuery: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)) Call Aut: 7
370ForwardQuery: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)) Call Aut (failed Additions): 1
371BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Nodes: 13
372BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut: 13
373BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut (failed Additions): 1
374BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Field Aut (failed Direct Additions): 0
375BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Call Aut: 19
376BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) Call Aut (failed Additions): 20
377Total number of rules: 40
378========================
379ForwardQuery: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))
380========================
381class boomerang.WeightedBoomerang$7
382All reachable states
383(encode return $r3,$r3 (StringCoding.encode)) (encode return $r15,$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)) (encode return $r11,$r11 (StringCoding.encode)) (getBytes return $r3,$r3 (String.getBytes)) (cipherUsageExampleUsingFieldWithStringConstant return,$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (getBytes return $r4,$r4 (String.getBytes))
384
385Field WPDS (#Rules: 7)
386 NormalRules:
387 <(encode return $r15,$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1));*>-><(encode return $r11,$r11 (StringCoding.encode));*>
388 <(encode return $r3,$r3 (StringCoding.encode));*>-><(getBytes return $r3,$r3 (String.getBytes));*>
389 <(encode return $r15,$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1));*>-><(encode return $r3,$r3 (StringCoding.encode));*>
390 <(getBytes return $r3,$r3 (String.getBytes));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
391 <(encode return $r11,$r11 (StringCoding.encode));*>-><(getBytes return $r3,$r3 (String.getBytes));*>
392 <(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant return,$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>
393 <(encode return $r15,$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1));*>-><(getBytes return $r4,$r4 (String.getBytes));*>
394 PopRules:
395
396 PushRules:
397
398digraph {
399 "(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))"[label="{} W: "];
400 "(cipherUsageExampleUsingFieldWithStringConstant return,$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))"[label="{} W: "];
401 "(encode return $r11,$r11 (StringCoding.encode))" -> "ENTRY: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))"[label="{} W: "];
402 "(encode return $r15,$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))" -> "ENTRY: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))"[label="{} W: "];
403 "(encode return $r3,$r3 (StringCoding.encode))" -> "ENTRY: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))"[label="{} W: "];
404 "(getBytes return $r3,$r3 (String.getBytes))" -> "ENTRY: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))"[label="{} W: "];
405 "(getBytes return $r4,$r4 (String.getBytes))" -> "ENTRY: (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1))"[label="{} W: "];
406}
407Transitions: 7 Nested: 0
408End nesting
409
410Call WPDS (#Rules: 7)
411 NormalRules:
412 <$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>-><$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant return>
413 PopRules:
414 <$r3 (String.getBytes);getBytes return $r3>-><$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)>()
415 <$r11 (StringCoding.encode);encode return $r11>-><$r3 (String.getBytes)>()
416 <$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1);encode return $r15>-><$r4 (String.getBytes)>()
417 <$r3 (StringCoding.encode);encode return $r3>-><$r3 (String.getBytes)>()
418 <$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1);encode return $r15>-><$r3 (StringCoding.encode)>()
419 <$r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1);encode return $r15>-><$r11 (StringCoding.encode)>()
420 PushRules:
421
422digraph {
423 "$r11 (StringCoding.encode)" -> "ENTRY: $r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)"[label="encode return $r11 W: "];
424 "$r3 (String.getBytes)" -> "ENTRY: $r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)"[label="getBytes return $r3 W: "];
425 "$r3 (StringCoding.encode)" -> "ENTRY: $r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)"[label="encode return $r3 W: "];
426 "$r4 (String.getBytes)" -> "ENTRY: $r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)"[label="getBytes return $r4 W: "];
427 "$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: $r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)"[label="cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5) W: \ncipherUsageExampleUsingFieldWithStringConstant return W: "];
428 "ENTRY: $r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)" -> "ENTRY: $r15 (StringCoding.encode) Value: virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)"[label="encode return $r15 W: "];
429}
430Transitions: 7 Nested: 0
431End nesting
432
433===== end === class boomerang.WeightedBoomerang$7
434<java.lang.String: byte[] getBytes()>
435(getBytes return $r3,$r3 {})=
436<java.lang.StringCoding: void <clinit>()>
437
438<java.lang.StringCoding: byte[] encode(java.lang.String,char[],int,int)>
439(encode return $r15,$r15 {})=
440<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
441(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 {})=
442 (cipherUsageExampleUsingFieldWithStringConstant return,$r5 {})=
443<java.lang.StringCoding: byte[] encode(char[],int,int)>
444(encode return $r3,$r3 {})=
445 (encode return $r11,$r11 {})=
446<java.lang.Object: void <clinit>()>
447
448========================
449BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
450========================
451class boomerang.WeightedBoomerang$5
452All reachable states
453(encode set($r5,r11),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode)) (encode if $z1 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode)) (encode return $r3,$r3 (StringCoding.encode)) (encode return $r15,$r15 (StringCoding.encode)) (encode encode("ISO-8859-1",r0,i0,i1),$r11 (StringCoding.encode)) (encode return null,null (StringCoding.encode)) (getBytes encode($r2,0,$i0),$r3 (String.getBytes))
454(encode if $z0 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode)) (encode return $r11,$r11 (StringCoding.encode)) (cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode)) (getBytes return $r3,$r3 (String.getBytes)) (encode encode(r1,r0,i0,i1),$r3 (StringCoding.encode))
455Field WPDS (#Rules: 13)
456 NormalRules:
457 <(encode return $r11,$r11 (StringCoding.encode));*>-><(encode encode("ISO-8859-1",r0,i0,i1),$r11 (StringCoding.encode));*>
458 <(getBytes return $r3,$r3 (String.getBytes));*>-><(getBytes encode($r2,0,$i0),$r3 (String.getBytes));*>
459 <(getBytes encode($r2,0,$i0),$r3 (String.getBytes));*>-><(encode return $r11,$r11 (StringCoding.encode));*>
460 <(encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode));*>-><(encode if $z0 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode));*>
461 <(encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode));*>-><(encode if $z1 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode));*>
462 <(encode return $r3,$r3 (StringCoding.encode));*>-><(encode encode(r1,r0,i0,i1),$r3 (StringCoding.encode));*>
463 <(encode return $r15,$r15 (StringCoding.encode));*>-><(encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode));*>
464 <(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(getBytes return $r3,$r3 (String.getBytes));*>
465 <(encode encode("ISO-8859-1",r0,i0,i1),$r11 (StringCoding.encode));*>-><(encode return $r15,$r15 (StringCoding.encode));*>
466 <(getBytes encode($r2,0,$i0),$r3 (String.getBytes));*>-><(encode return null,null (StringCoding.encode));*>
467 <(getBytes encode($r2,0,$i0),$r3 (String.getBytes));*>-><(encode return $r3,$r3 (StringCoding.encode));*>
468 <(encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode));*>-><(encode set($r5,r11),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode));*>
469 <(encode encode(r1,r0,i0,i1),$r3 (StringCoding.encode));*>-><(encode return $r15,$r15 (StringCoding.encode));*>
470 PopRules:
471
472 PushRules:
473
474digraph {
475 "(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
476 "(encode encode(ISO-8859-1,r0,i0,i1),$r11 (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
477 "(encode encode(r1,r0,i0,i1),$r3 (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
478 "(encode if $z0 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
479 "(encode if $z1 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
480 "(encode r11.encode(r1,i0,i1),$r15 (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
481 "(encode return $r11,$r11 (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
482 "(encode return $r15,$r15 (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
483 "(encode return $r3,$r3 (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
484 "(encode return null,null (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
485 "(encode set($r5,r11),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
486 "(getBytes encode($r2,0,$i0),$r3 (String.getBytes))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
487 "(getBytes return $r3,$r3 (String.getBytes))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: "];
488}
489Transitions: 13 Nested: 0
490End nesting
491
492Call WPDS (#Rules: 13)
493 NormalRules:
494 <$r3 (StringCoding.encode);encode return $r3>-><$r3 (StringCoding.encode);encode encode(r1,r0,i0,i1)>
495 <$r3 (String.getBytes);getBytes return $r3>-><$r3 (String.getBytes);getBytes encode($r2,0,$i0)>
496 <$r15 (StringCoding.encode);encode r11.encode(r1,i0,i1)>-><virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode);encode set($r5,r11)>
497 <$r11 (StringCoding.encode);encode return $r11>-><$r11 (StringCoding.encode);encode encode("ISO-8859-1",r0,i0,i1)>
498 <$r15 (StringCoding.encode);encode r11.encode(r1,i0,i1)>-><virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode);encode if $z0 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)>
499 <$r15 (StringCoding.encode);encode return $r15>-><$r15 (StringCoding.encode);encode r11.encode(r1,i0,i1)>
500 <$r15 (StringCoding.encode);encode r11.encode(r1,i0,i1)>-><virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode);encode if $z1 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1)>
501 PopRules:
502
503 PushRules:
504 <$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>-><$r3 (String.getBytes);getBytes return $r3.cipherUsageExampleUsingFieldWithStringConstant $r4 = "">()
505 <$r3 (StringCoding.encode);encode encode(r1,r0,i0,i1)>-><$r15 (StringCoding.encode);encode return $r15.encode $r2.name()>()
506 <$r3 (String.getBytes);getBytes encode($r2,0,$i0)>-><$r3 (StringCoding.encode);encode return $r3.getBytes $i0 = lengthof $r1>()
507 <$r3 (String.getBytes);getBytes encode($r2,0,$i0)>-><$r11 (StringCoding.encode);encode return $r11.getBytes $i0 = lengthof $r1>()
508 <$r11 (StringCoding.encode);encode encode("ISO-8859-1",r0,i0,i1)>-><$r15 (StringCoding.encode);encode return $r15.encode warnUnsupportedCharset(r1)>()
509 <$r3 (String.getBytes);getBytes encode($r2,0,$i0)>-><null (StringCoding.encode);encode return null.getBytes $i0 = lengthof $r1>()
510digraph {
511 "$r11 (StringCoding.encode) encode return $r11" -> "$r3 (String.getBytes) getBytes return $r3"[label="getBytes $i0 = lengthof $r1 W: "];
512 "$r11 (StringCoding.encode)" -> "$r11 (StringCoding.encode) encode return $r11"[label="encode encode(ISO-8859-1,r0,i0,i1) W: \nencode return $r11 W: "];
513 "$r15 (StringCoding.encode) encode return $r15" -> "$r11 (StringCoding.encode) encode return $r11"[label="encode warnUnsupportedCharset(r1) W: "];
514 "$r15 (StringCoding.encode) encode return $r15" -> "$r3 (StringCoding.encode) encode return $r3"[label="encode $r2.name() W: "];
515 "$r15 (StringCoding.encode)" -> "$r15 (StringCoding.encode) encode return $r15"[label="encode return $r15 W: \nencode r11.encode(r1,i0,i1) W: "];
516 "$r3 (String.getBytes) getBytes return $r3" -> "ENTRY: $r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant $r4 = W: "];
517 "$r3 (String.getBytes)" -> "$r3 (String.getBytes) getBytes return $r3"[label="getBytes encode($r2,0,$i0) W: \ngetBytes return $r3 W: "];
518 "$r3 (StringCoding.encode) encode return $r3" -> "$r3 (String.getBytes) getBytes return $r3"[label="getBytes $i0 = lengthof $r1 W: "];
519 "$r3 (StringCoding.encode)" -> "$r3 (StringCoding.encode) encode return $r3"[label="encode return $r3 W: \nencode encode(r1,r0,i0,i1) W: "];
520 "ENTRY: $r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: $r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes() W: "];
521 "null (StringCoding.encode) encode return null" -> "$r3 (String.getBytes) getBytes return $r3"[label="getBytes $i0 = lengthof $r1 W: "];
522 "null (StringCoding.encode)" -> "null (StringCoding.encode) encode return null"[label="encode return null W: "];
523 "virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) (StringCoding.encode)" -> "$r15 (StringCoding.encode) encode return $r15"[label="encode if $z0 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) W: \nencode if $z1 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) W: \nencode set($r5,r11) W: "];
524}
525Transitions: 19 Nested: 0
526End nesting
527
528===== end === class boomerang.WeightedBoomerang$5
529<java.lang.String: byte[] getBytes()>
530(getBytes encode($r2,0,$i0),$r3 {})=
531 (getBytes return $r3,$r3 {})=
532<java.lang.StringCoding: void <clinit>()>
533
534<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
535(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),$r5 {})=
536<java.lang.StringCoding: byte[] encode(char[],int,int)>
537(encode encode("ISO-8859-1",r0,i0,i1),$r11 {})=
538 (encode return $r11,$r11 {})=
539 (encode encode(r1,r0,i0,i1),$r3 {})=
540 (encode return $r3,$r3 {})=
541 (encode return null,null {})=
542<java.lang.StringCoding: byte[] encode(java.lang.String,char[],int,int)>
543(encode if $z0 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) {})=
544 (encode if $z1 != 0 goto $r15 = virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) {})=
545 (encode r11.encode(r1,i0,i1),$r15 {})=
546 (encode set($r5,r11),virtualinvoke r11.<java.lang.StringCoding$StringEncoder: byte[] encode(char[],int,int)>(r1, i0, i1) {})=
547 (encode return $r15,$r15 {})=
548<java.lang.Object: void <clinit>()>
549
550Analysis Time: PT1.495389431S
551Estimated Time: PT2.990778862S
552Analyzed Objects: 1 of 3
553Percentage Completed: 0.33
554
555Forward solving query: AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator]
556Backward solving query: BackwardQuery: (getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"))
557Backward solving query: BackwardQuery: (getKey r0.init(128),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"))
558AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Nodes: 3
559AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Field Aut: 3
560AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Field Aut (failed Additions): 0
561AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Field Aut (failed Direct Additions): 0
562AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Call Aut: 3
563AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Call Aut (failed Additions): 2
564Total number of rules: 4
565========================
566AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator]
567========================
568class boomerang.WeightedBoomerang$7
569All reachable states
570(getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) (getKey return $r1,r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) (getKey r0.init(128),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"))
571Field WPDS (#Rules: 2)
572 NormalRules:
573 <(getKey r0.init(128),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"));*>-><(getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"));*>(ONE)
574 <(getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"));*>-><(getKey return $r1,r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"));*>(ONE)
575 PopRules:
576
577 PushRules:
578
579digraph {
580 "(getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))" -> "ENTRY: (getKey getInstance(AES),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))"[label="{} W: ONE"];
581 "(getKey r0.init(128),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))" -> "ENTRY: (getKey getInstance(AES),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))"[label="{} W: ONE"];
582 "(getKey return $r1,r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))" -> "ENTRY: (getKey getInstance(AES),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))"[label="{} W: ONE"];
583}
584Transitions: 3 Nested: 0
585End nesting
586
587Call WPDS (#Rules: 2)
588 NormalRules:
589 <r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES");getKey r0.generateKey()>-><r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES");getKey return $r1>(Weight: [-1 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>], 0 -> 2 with [<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>], 1 -> 2 with [<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>], 2 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>]])
590 <r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES");getKey r0.init(128)>-><r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES");getKey r0.generateKey()>(Weight: [-1 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>], 0 -> 1 with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>], 1 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>], 2 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>]])
591 PopRules:
592
593 PushRules:
594
595digraph {
596 "ENTRY: r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES)" -> "ENTRY: r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES)"[label="getKey r0.generateKey() W: Weight: [-1 -> 1]\ngetKey r0.init(128) W: Weight: [-1 -> 0 with [<javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>]]\ngetKey return $r1 W: Weight: [-1 -> 2]"];
597}
598Transitions: 3 Nested: 0
599End nesting
600
601===== end === class boomerang.WeightedBoomerang$7
602<main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
603(getKey r0.init(128),r0 {})=Weight: [-1 -> 0 with [<javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>]]
604 (getKey return $r1,r0 {})=Weight: [-1 -> 2]
605 (getKey r0.generateKey(),r0 {})=Weight: [-1 -> 1]
606Forward solving query: AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator]
607AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Nodes: 3
608AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Field Aut: 3
609AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Field Aut (failed Additions): 0
610AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Field Aut (failed Direct Additions): 0
611AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Call Aut: 3
612AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator] Call Aut (failed Additions): 2
613Total number of rules: 4
614========================
615AnalysisSeed [ForwardQuery: (getKey getInstance("AES"),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) with spec KeyGenerator]
616========================
617class boomerang.WeightedBoomerang$7
618All reachable states
619(getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) (getKey return $r1,r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")) (getKey r0.init(128),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"))
620Field WPDS (#Rules: 2)
621 NormalRules:
622 <(getKey r0.init(128),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"));*>-><(getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"));*>(ONE)
623 <(getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"));*>-><(getKey return $r1,r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES"));*>(ONE)
624 PopRules:
625
626 PushRules:
627
628digraph {
629 "(getKey r0.generateKey(),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))" -> "ENTRY: (getKey getInstance(AES),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))"[label="{} W: ONE"];
630 "(getKey r0.init(128),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))" -> "ENTRY: (getKey getInstance(AES),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))"[label="{} W: ONE"];
631 "(getKey return $r1,r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))" -> "ENTRY: (getKey getInstance(AES),r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES))"[label="{} W: ONE"];
632}
633Transitions: 3 Nested: 0
634End nesting
635
636Call WPDS (#Rules: 2)
637 NormalRules:
638 <r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES");getKey r0.generateKey()>-><r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES");getKey return $r1>(Weight: [-1 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>], 0 -> 2 with [<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>], 1 -> 2 with [<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>], 2 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>]])
639 <r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES");getKey r0.init(128)>-><r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES");getKey r0.generateKey()>(Weight: [-1 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>], 0 -> 1 with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>], 1 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>], 2 -> ERR with [<javax.crypto.KeyGenerator: void init(java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>, <javax.crypto.KeyGenerator: void init(int)>, <javax.crypto.KeyGenerator: void init(java.security.spec.AlgorithmParameterSpec,java.security.SecureRandom)>, <javax.crypto.KeyGenerator: void init(int,java.security.SecureRandom)>]])
640 PopRules:
641
642 PushRules:
643
644digraph {
645 "ENTRY: r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES)" -> "ENTRY: r0 (DataFlowImprecisionExample.getKey) Value: staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>(AES)"[label="getKey r0.generateKey() W: Weight: [-1 -> 1]\ngetKey r0.init(128) W: Weight: [-1 -> 0 with [<javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>]]\ngetKey return $r1 W: Weight: [-1 -> 2]"];
646}
647Transitions: 3 Nested: 0
648End nesting
649
650===== end === class boomerang.WeightedBoomerang$7
651<main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
652(getKey r0.init(128),r0 {})=Weight: [-1 -> 0 with [<javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.security.Provider)>, <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String,java.lang.String)>]]
653 (getKey return $r1,r0 {})=Weight: [-1 -> 2]
654 (getKey r0.generateKey(),r0 {})=Weight: [-1 -> 1]
655Analysis Time: PT1.537831427S
656Estimated Time: PT1.537831426S
657Analyzed Objects: 2 of 4
658Percentage Completed: 0.5
659
660Forward solving query: AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted]
661AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Nodes: 1
662AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Field Aut: 1
663AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Field Aut (failed Additions): 0
664AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Field Aut (failed Direct Additions): 0
665AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Call Aut: 1
666AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Call Aut (failed Additions): 0
667Total number of rules: 0
668========================
669AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted]
670========================
671class boomerang.WeightedBoomerang$7
672All reachable states
673(cipherUsageExampleUsingFieldWithStringConstant return,$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
674Field WPDS (#Rules: 0)
675 NormalRules:
676
677 PopRules:
678
679 PushRules:
680
681digraph {
682 "(cipherUsageExampleUsingFieldWithStringConstant return,$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: ONE"];
683}
684Transitions: 1 Nested: 0
685End nesting
686
687Call WPDS (#Rules: 0)
688 NormalRules:
689
690 PopRules:
691
692 PushRules:
693
694digraph {
695 "ENTRY: $r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: $r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant return W: ONE"];
696}
697Transitions: 1 Nested: 0
698End nesting
699
700===== end === class boomerang.WeightedBoomerang$7
701<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
702(cipherUsageExampleUsingFieldWithStringConstant return,$r5 {})=ONE
703Forward solving query: AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted]
704AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Nodes: 1
705AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Field Aut: 1
706AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Field Aut (failed Additions): 0
707AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Field Aut (failed Direct Additions): 0
708AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Call Aut: 1
709AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted] Call Aut (failed Additions): 0
710Total number of rules: 0
711========================
712AnalysisSeedWithEnsuredPredicate:(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) [Proved encrypted]
713========================
714class boomerang.WeightedBoomerang$7
715All reachable states
716(cipherUsageExampleUsingFieldWithStringConstant return,$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
717Field WPDS (#Rules: 0)
718 NormalRules:
719
720 PopRules:
721
722 PushRules:
723
724digraph {
725 "(cipherUsageExampleUsingFieldWithStringConstant return,$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),$r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))"[label="{} W: ONE"];
726}
727Transitions: 1 Nested: 0
728End nesting
729
730Call WPDS (#Rules: 0)
731 NormalRules:
732
733 PopRules:
734
735 PushRules:
736
737digraph {
738 "ENTRY: $r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: $r5 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)"[label="cipherUsageExampleUsingFieldWithStringConstant return W: ONE"];
739}
740Transitions: 1 Nested: 0
741End nesting
742
743===== end === class boomerang.WeightedBoomerang$7
744<main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
745(cipherUsageExampleUsingFieldWithStringConstant return,$r5 {})=ONE
746Analysis Time: PT1.548543206S
747Estimated Time: PT0.516181068S
748Analyzed Objects: 3 of 4
749Percentage Completed: 0.75
750
751Forward solving query: AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey]
752AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Nodes: 8
753AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Field Aut: 8
754AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Field Aut (failed Additions): 0
755AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Field Aut (failed Direct Additions): 0
756AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Call Aut: 8
757AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Call Aut (failed Additions): 5
758Total number of rules: 14
759========================
760AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey]
761========================
762class boomerang.WeightedBoomerang$7
763All reachable states
764(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) (cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
765(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
766Field WPDS (#Rules: 7)
767 NormalRules:
768 <(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
769 <(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
770 <(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>());*>-><(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
771 <(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
772 <(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
773 <(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
774 <(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
775 PopRules:
776
777 PushRules:
778
779digraph {
780 "(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
781 "(cipherUsageExampleUsingFieldWithStringConstant $r4 = ,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
782 "(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
783 "(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
784 "(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
785 "(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
786 "(cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
787 "(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
788}
789Transitions: 8 Nested: 0
790End nesting
791
792Call WPDS (#Rules: 7)
793 NormalRules:
794 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getInstance($r3)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0)>(ONE)
795 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>(ONE)
796 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant return>(ONE)
797 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getInstance($r3)>(ONE)
798 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>(ONE)
799 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">(ONE)
800 PopRules:
801 <$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>();getKey return $r1>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)>(ONE)
802 PushRules:
803
804digraph {
805 "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()" -> "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()"[label="getKey return $r1 W: Weight: [-1 -> 0 with []]"];
806 "r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()"[label="cipherUsageExampleUsingFieldWithStringConstant return W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0) W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant $r4 = W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5) W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant $r4.getBytes() W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field> W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant getInstance($r3) W: Weight: [-1 -> 0 with []]"];
807}
808Transitions: 8 Nested: 0
809End nesting
810
811===== end === class boomerang.WeightedBoomerang$7
812<main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
813(getKey return $r1,$r1 {})=Weight: [-1 -> 0 with []]
814Forward solving query: AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey]
815AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Nodes: 8
816AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Field Aut: 8
817AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Field Aut (failed Additions): 0
818AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Field Aut (failed Direct Additions): 0
819AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Call Aut: 8
820AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey] Call Aut (failed Additions): 5
821Total number of rules: 14
822========================
823AnalysisSeed [ForwardQuery: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) with spec SecretKey]
824========================
825class boomerang.WeightedBoomerang$7
826All reachable states
827(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)) (getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()) (cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
828(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
829Field WPDS (#Rules: 7)
830 NormalRules:
831 <(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
832 <(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
833 <(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>());*>-><(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
834 <(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
835 <(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
836 <(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
837 <(cipherUsageExampleUsingFieldWithStringConstant $r4 = "",r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>-><(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant));*>(ONE)
838 PopRules:
839
840 PushRules:
841
842digraph {
843 "(cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
844 "(cipherUsageExampleUsingFieldWithStringConstant $r4 = ,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
845 "(cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes(),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
846 "(cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
847 "(cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
848 "(cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
849 "(cipherUsageExampleUsingFieldWithStringConstant return,r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
850 "(getKey return $r1,$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())" -> "ENTRY: (getKey r0.generateKey(),$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>())"[label="{} W: ONE"];
851}
852Transitions: 8 Nested: 0
853End nesting
854
855Call WPDS (#Rules: 7)
856 NormalRules:
857 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getInstance($r3)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0)>(ONE)
858 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>(ONE)
859 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant return>(ONE)
860 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field>>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant getInstance($r3)>(ONE)
861 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4.getBytes()>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5)>(ONE)
862 <r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0)>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant);cipherUsageExampleUsingFieldWithStringConstant $r4 = "">(ONE)
863 PopRules:
864 <$r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>();getKey return $r1>-><r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)>(ONE)
865 PushRules:
866
867digraph {
868 "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()" -> "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()"[label="getKey return $r1 W: Weight: [-1 -> 0 with []]"];
869 "r0 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant)" -> "ENTRY: $r1 (DataFlowImprecisionExample.getKey) Value: virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()"[label="cipherUsageExampleUsingFieldWithStringConstant return W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0) W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant $r4 = W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant r1.doFinal($r5) W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant $r4.getBytes() W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant $r3 = <main.DataFlowImprecisionExample: java.lang.String field> W: Weight: [-1 -> 0 with []]\ncipherUsageExampleUsingFieldWithStringConstant getInstance($r3) W: Weight: [-1 -> 0 with []]"];
870}
871Transitions: 8 Nested: 0
872End nesting
873
874===== end === class boomerang.WeightedBoomerang$7
875<main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
876(getKey return $r1,$r1 {})=Weight: [-1 -> 0 with []]
877Backward solving query: BackwardQuery: (cipherUsageExampleUsingFieldWithStringConstant r1.init(1,r0),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant))
878Forward solving query: ForwardQuery: (cipherUsageExampleUsingFieldWithStringConstant getInstance($r3),r1 (DataFlowImprecisionExample.cipherUsageExampleUsingFieldWithStringConstant) Value: staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3))
879Ruleset:
880 IvParameterSpec
881 AlgorithmParameters
882 SecretKeyFactory
883 Mac
884 DHParameterSpec
885 MessageDigest
886 Signature
887 KeyPair
888 RSAKeyGenParameterSpec
889 SecretKey
890 KeyPairGenerator
891 GCMParameterSpec
892 Stopwatch
893 Cipher
894 DHGenParameterSpec
895 SecureRandom
896 HMACParameterSpec
897 SecretKeySpec
898 DSAGenParameterSpec
899 DSAParameterSpec
900 PBEKeySpec
901 KeyGenerator
902 KeyStore
903 PBEParameterSpec
904
905Analyzed Objects:
906 Object:
907 Variable: r0
908 Type: javax.crypto.KeyGenerator
909 Statement: r0 = staticinvoke <javax.crypto.KeyGenerator: javax.crypto.KeyGenerator getInstance(java.lang.String)>("AES")
910 Method: <main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
911 SHA-256: c42cdc4d71c39bcbf05bddcf894351176392023f46594aaeb39b65c99606a122
912 Object:
913 Variable: r1
914 Type: javax.crypto.Cipher
915 Statement: r1 = staticinvoke <javax.crypto.Cipher: javax.crypto.Cipher getInstance(java.lang.String)>($r3)
916 Method: <main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
917 SHA-256: 466270f43db6407edc20cf61dade4db22a51ceff0c43b178f1db8d41f1999658
918 Object:
919 Variable: $r1
920 Type: javax.crypto.SecretKey
921 Statement: $r1 = virtualinvoke r0.<javax.crypto.KeyGenerator: javax.crypto.SecretKey generateKey()>()
922 Method: <main.DataFlowImprecisionExample: javax.crypto.SecretKey getKey()>
923 SHA-256: e58016426fd31cf3424bf7e6ccda489d665d61e48185552c873021547f1bb7a3
924 Object:
925 Variable: $r5
926 Type: byte[]
927 Statement: virtualinvoke r1.<javax.crypto.Cipher: byte[] doFinal(byte[])>($r5)
928 Method: <main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>
929 SHA-256: d0bd880d86667ca8a725cfe0b71350fea3471edd0f821ed356b96fd7ba5a0484
930
931======================= CogniCrypt Summary ==========================
932 Number of CrySL rules: 24
933 Number of Objects Analyzed: 4
934No violation of any of the rules found.=====================================================================
935Static Analysis took 1 seconds!
936Analysis finished after 7 seconds
937
938java.lang.RuntimeException: Did not find all errors of type class crypto.analysis.errors.ConstraintError in method <main.DataFlowImprecisionExample: void cipherUsageExampleUsingFieldWithStringConstant()>