Improvements around parsing/logging security lattice
[hiphop-php.git] / hphp / hack / test / ifc / analysis / catch.php.exp
blob7a83b11a8fc3d5731ca3111811875477521d5848
1 Decls:
2 class \Exception: { policied_props = [] }
3 class \HH\vec: { policied_props = [] }
4 class \X: { policied_props = [a:A, b:B] }
5 function \do_not_leak_pc_after_catch: { kind = public }
6 function \leak_pc_in_catch: { kind = public }
7 function \nested_try: { kind = public }
8 function \throw_in_catch: { kind = public }
10 Analyzing \leak_pc_in_catch:
11 * pc: pc
12 * This: None
13 * Return: <ret>
14 * Exception: \Exception<\Exception, lump>
15 * Params:
16 lvars:
17 { $e -> \Exception<\Exception'1, lump'2>;
18 $x -> \X<\X, lump'1, a=<A>, b=<B>> }
19 * Final environment:
20 Deps: {}
21 Locals:
22 lvars:
23 { $e -> \Exception<\Exception'1, lump'2>;
24 $exn -> \Exception<\Exception'2, lump'3>;
25 $x -> \X<\X, lump'1, a=<A>, b=<B>> }
26 Constraints:
27 [A < .a, \X < .a, lump'2 = lump'3, \Exception'1 < \Exception'2, \X < B,
28 PUBLIC < B, .a < B, pc < B]
30 Analyzing \do_not_leak_pc_after_catch:
31 * pc: pc
32 * This: None
33 * Return: <ret>
34 * Exception: \Exception<\Exception, lump>
35 * Params:
36 lvars:
37 { $e -> \Exception<\Exception'1, lump'2>;
38 $x -> \X<\X, lump'1, a=<A>, b=<B>> }
39 * Final environment:
40 Deps: {}
41 Locals:
42 lvars:
43 { $_ -> \Exception<\Exception'2, lump'3>;
44 $e -> \Exception<\Exception'1, lump'2>;
45 $x -> \X<\X, lump'1, a=<A>, b=<B>> }
46 Constraints:
47 [A < .a, \X < .a, lump'2 = lump'3, \Exception'1 < \Exception'2, \X < B,
48 PUBLIC < B, pc < B]
50 Analyzing \nested_try:
51 * pc: pc
52 * This: None
53 * Return: <ret>
54 * Exception: \Exception<\Exception, lump>
55 * Params:
56 lvars:
57 { $e -> \Exception<\Exception'1, lump'2>;
58 $x -> \X<\X, lump'1, a=<A>, b=<B>> }
59 * Final environment:
60 Deps: {}
61 Locals:
62 lvars:
63 { $_ -> \Exception<\Exception'2, lump'3>;
64 $e -> \Exception<\Exception'1, lump'2>;
65 $x -> \X<\X, lump'1, a=<A>, b=<B>> }
66 Constraints:
67 [A < .a, \X < .a, lump'2 = lump'3, \Exception'1 < \Exception'2, \X < B,
68 PUBLIC < B, .a < B, pc < B]
70 Analyzing \throw_in_catch:
71 * pc: pc
72 * This: None
73 * Return: <ret>
74 * Exception: \Exception<\Exception, lump>
75 * Params:
76 lvars:
77 { $e -> \Exception<\Exception'1, lump'2>;
78 $x -> \X<\X, lump'1, a=<A>, b=<B>> }
79 * Final environment:
80 Deps: {}
81 Locals:
82 lvars:
83 { $_ -> \Exception<\Exception'2, lump'3>;
84 $e -> \Exception<\Exception'1, lump'2>;
85 $x -> \X<\X, lump'1, a=<A>, b=<B>> }
86 pc: .a
87 Constraints:
88 [lump'2 = lump'3, \Exception'1 < \Exception'2, A < .a, \X < .a,
89 lump'2 = lump, \Exception'1 < \Exception, \X < B, PUBLIC < B, .a < B,
90 pc < B]
92 Flow constraints for \do_not_leak_pc_after_catch:
94 Simplified: PUBLIC < B
95 Raw:
96 [A < .a, \X < .a, lump'2 = lump'3, \Exception'1 < \Exception'2, \X < B,
97 PUBLIC < B, pc < B]
99 Flow constraints for \leak_pc_in_catch:
101 Simplified: [PUBLIC < B, A < B]
102 Raw:
103 [A < .a, \X < .a, lump'2 = lump'3, \Exception'1 < \Exception'2, \X < B,
104 PUBLIC < B, .a < B, pc < B]
106 Flow constraints for \nested_try:
108 Simplified: [PUBLIC < B, A < B]
109 Raw:
110 [A < .a, \X < .a, lump'2 = lump'3, \Exception'1 < \Exception'2, \X < B,
111 PUBLIC < B, .a < B, pc < B]
113 Flow constraints for \throw_in_catch:
115 Simplified: [PUBLIC < B, A < B]
116 Raw:
117 [lump'2 = lump'3, \Exception'1 < \Exception'2, A < .a, \X < .a,
118 lump'2 = lump, \Exception'1 < \Exception, \X < B, PUBLIC < B, .a < B,
119 pc < B]
121 Lattice:
122 {PUBLIC < PRIVATE}
124 There are privacy policy errors in \do_not_leak_pc_after_catch:
125 Data with policy PUBLIC appears in context B.
127 There are privacy policy errors in \leak_pc_in_catch:
128 Data with policy PUBLIC appears in context B.
129 Data with policy A appears in context B.
131 There are privacy policy errors in \nested_try:
132 Data with policy PUBLIC appears in context B.
133 Data with policy A appears in context B.
135 There are privacy policy errors in \throw_in_catch:
136 Data with policy PUBLIC appears in context B.
137 Data with policy A appears in context B.