Skip to content

Commit ee1a60d

Browse files
committed
Ruby: Add more barrier guards tests
1 parent 37d28de commit ee1a60d

File tree

3 files changed

+225
-0
lines changed

3 files changed

+225
-0
lines changed

ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,20 @@ edges
66
| barrier_flow.rb:8:9:8:17 | call to source | barrier_flow.rb:8:5:8:5 | x | provenance | |
77
| barrier_flow.rb:24:5:24:5 | x | barrier_flow.rb:26:10:26:10 | x | provenance | |
88
| barrier_flow.rb:24:9:24:17 | call to source | barrier_flow.rb:24:5:24:5 | x | provenance | |
9+
| barrier_flow.rb:82:5:82:5 | x | barrier_flow.rb:87:14:87:14 | x | provenance | |
10+
| barrier_flow.rb:82:5:82:5 | x | barrier_flow.rb:93:14:93:14 | x | provenance | |
11+
| barrier_flow.rb:82:5:82:5 | x | barrier_flow.rb:99:14:99:14 | x | provenance | |
12+
| barrier_flow.rb:82:5:82:5 | x | barrier_flow.rb:103:14:103:14 | x | provenance | |
13+
| barrier_flow.rb:82:5:82:5 | x | barrier_flow.rb:105:14:105:14 | x | provenance | |
14+
| barrier_flow.rb:82:5:82:5 | x | barrier_flow.rb:109:14:109:14 | x | provenance | |
15+
| barrier_flow.rb:82:5:82:5 | x | barrier_flow.rb:111:14:111:14 | x | provenance | |
16+
| barrier_flow.rb:82:9:82:18 | call to source | barrier_flow.rb:82:5:82:5 | x | provenance | |
17+
| barrier_flow.rb:116:5:116:5 | x | barrier_flow.rb:121:14:121:14 | x | provenance | |
18+
| barrier_flow.rb:116:5:116:5 | x | barrier_flow.rb:125:14:125:14 | x | provenance | |
19+
| barrier_flow.rb:116:5:116:5 | x | barrier_flow.rb:131:14:131:14 | x | provenance | |
20+
| barrier_flow.rb:116:5:116:5 | x | barrier_flow.rb:137:14:137:14 | x | provenance | |
21+
| barrier_flow.rb:116:5:116:5 | x | barrier_flow.rb:143:14:143:14 | x | provenance | |
22+
| barrier_flow.rb:116:9:116:18 | call to source | barrier_flow.rb:116:5:116:5 | x | provenance | |
923
nodes
1024
| barrier_flow.rb:2:5:2:5 | x | semmle.label | x |
1125
| barrier_flow.rb:2:9:2:17 | call to source | semmle.label | call to source |
@@ -16,9 +30,39 @@ nodes
1630
| barrier_flow.rb:24:5:24:5 | x | semmle.label | x |
1731
| barrier_flow.rb:24:9:24:17 | call to source | semmle.label | call to source |
1832
| barrier_flow.rb:26:10:26:10 | x | semmle.label | x |
33+
| barrier_flow.rb:82:5:82:5 | x | semmle.label | x |
34+
| barrier_flow.rb:82:9:82:18 | call to source | semmle.label | call to source |
35+
| barrier_flow.rb:87:14:87:14 | x | semmle.label | x |
36+
| barrier_flow.rb:93:14:93:14 | x | semmle.label | x |
37+
| barrier_flow.rb:99:14:99:14 | x | semmle.label | x |
38+
| barrier_flow.rb:103:14:103:14 | x | semmle.label | x |
39+
| barrier_flow.rb:105:14:105:14 | x | semmle.label | x |
40+
| barrier_flow.rb:109:14:109:14 | x | semmle.label | x |
41+
| barrier_flow.rb:111:14:111:14 | x | semmle.label | x |
42+
| barrier_flow.rb:116:5:116:5 | x | semmle.label | x |
43+
| barrier_flow.rb:116:9:116:18 | call to source | semmle.label | call to source |
44+
| barrier_flow.rb:121:14:121:14 | x | semmle.label | x |
45+
| barrier_flow.rb:125:14:125:14 | x | semmle.label | x |
46+
| barrier_flow.rb:131:14:131:14 | x | semmle.label | x |
47+
| barrier_flow.rb:137:14:137:14 | x | semmle.label | x |
48+
| barrier_flow.rb:143:14:143:14 | x | semmle.label | x |
1949
subpaths
2050
testFailures
51+
| barrier_flow.rb:105:14:105:14 | x | Unexpected result: hasValueFlow=10 |
52+
| barrier_flow.rb:111:14:111:14 | x | Unexpected result: hasValueFlow=10 |
2153
#select
2254
| barrier_flow.rb:4:10:4:10 | x | barrier_flow.rb:2:9:2:17 | call to source | barrier_flow.rb:4:10:4:10 | x | $@ | barrier_flow.rb:2:9:2:17 | call to source | call to source |
2355
| barrier_flow.rb:11:14:11:14 | x | barrier_flow.rb:8:9:8:17 | call to source | barrier_flow.rb:11:14:11:14 | x | $@ | barrier_flow.rb:8:9:8:17 | call to source | call to source |
2456
| barrier_flow.rb:26:10:26:10 | x | barrier_flow.rb:24:9:24:17 | call to source | barrier_flow.rb:26:10:26:10 | x | $@ | barrier_flow.rb:24:9:24:17 | call to source | call to source |
57+
| barrier_flow.rb:87:14:87:14 | x | barrier_flow.rb:82:9:82:18 | call to source | barrier_flow.rb:87:14:87:14 | x | $@ | barrier_flow.rb:82:9:82:18 | call to source | call to source |
58+
| barrier_flow.rb:93:14:93:14 | x | barrier_flow.rb:82:9:82:18 | call to source | barrier_flow.rb:93:14:93:14 | x | $@ | barrier_flow.rb:82:9:82:18 | call to source | call to source |
59+
| barrier_flow.rb:99:14:99:14 | x | barrier_flow.rb:82:9:82:18 | call to source | barrier_flow.rb:99:14:99:14 | x | $@ | barrier_flow.rb:82:9:82:18 | call to source | call to source |
60+
| barrier_flow.rb:103:14:103:14 | x | barrier_flow.rb:82:9:82:18 | call to source | barrier_flow.rb:103:14:103:14 | x | $@ | barrier_flow.rb:82:9:82:18 | call to source | call to source |
61+
| barrier_flow.rb:105:14:105:14 | x | barrier_flow.rb:82:9:82:18 | call to source | barrier_flow.rb:105:14:105:14 | x | $@ | barrier_flow.rb:82:9:82:18 | call to source | call to source |
62+
| barrier_flow.rb:109:14:109:14 | x | barrier_flow.rb:82:9:82:18 | call to source | barrier_flow.rb:109:14:109:14 | x | $@ | barrier_flow.rb:82:9:82:18 | call to source | call to source |
63+
| barrier_flow.rb:111:14:111:14 | x | barrier_flow.rb:82:9:82:18 | call to source | barrier_flow.rb:111:14:111:14 | x | $@ | barrier_flow.rb:82:9:82:18 | call to source | call to source |
64+
| barrier_flow.rb:121:14:121:14 | x | barrier_flow.rb:116:9:116:18 | call to source | barrier_flow.rb:121:14:121:14 | x | $@ | barrier_flow.rb:116:9:116:18 | call to source | call to source |
65+
| barrier_flow.rb:125:14:125:14 | x | barrier_flow.rb:116:9:116:18 | call to source | barrier_flow.rb:125:14:125:14 | x | $@ | barrier_flow.rb:116:9:116:18 | call to source | call to source |
66+
| barrier_flow.rb:131:14:131:14 | x | barrier_flow.rb:116:9:116:18 | call to source | barrier_flow.rb:131:14:131:14 | x | $@ | barrier_flow.rb:116:9:116:18 | call to source | call to source |
67+
| barrier_flow.rb:137:14:137:14 | x | barrier_flow.rb:116:9:116:18 | call to source | barrier_flow.rb:137:14:137:14 | x | $@ | barrier_flow.rb:116:9:116:18 | call to source | call to source |
68+
| barrier_flow.rb:143:14:143:14 | x | barrier_flow.rb:116:9:116:18 | call to source | barrier_flow.rb:143:14:143:14 | x | $@ | barrier_flow.rb:116:9:116:18 | call to source | call to source |

ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
testFailures
2+
| barrier_flow.rb:105:16:105:26 | # $ guarded | Missing result:guarded= |
3+
| barrier_flow.rb:111:16:111:26 | # $ guarded | Missing result:guarded= |
24
failures
35
newStyleBarrierGuards
46
| barrier-guards.rb:3:16:4:19 | [input] SSA phi read(foo) |
@@ -46,6 +48,23 @@ newStyleBarrierGuards
4648
| barrier_flow.rb:58:5:59:34 | [input] SSA phi read(x) |
4749
| barrier_flow.rb:68:10:71:11 | [input] SSA phi read(x) |
4850
| barrier_flow.rb:72:5:75:11 | [input] SSA phi read(x) |
51+
| barrier_flow.rb:84:24:84:24 | x |
52+
| barrier_flow.rb:84:24:84:34 | [input] SSA phi read(x) |
53+
| barrier_flow.rb:84:36:85:26 | [input] SSA phi read(x) |
54+
| barrier_flow.rb:85:14:85:14 | x |
55+
| barrier_flow.rb:91:14:91:14 | x |
56+
| barrier_flow.rb:96:24:96:24 | x |
57+
| barrier_flow.rb:97:14:97:14 | x |
58+
| barrier_flow.rb:118:8:118:19 | [input] SSA phi read(x) |
59+
| barrier_flow.rb:118:24:118:35 | [input] SSA phi read(x) |
60+
| barrier_flow.rb:119:14:119:14 | x |
61+
| barrier_flow.rb:124:23:124:23 | x |
62+
| barrier_flow.rb:127:14:127:14 | x |
63+
| barrier_flow.rb:133:14:133:14 | x |
64+
| barrier_flow.rb:136:23:136:23 | x |
65+
| barrier_flow.rb:139:14:139:14 | x |
66+
| barrier_flow.rb:142:29:142:29 | x |
67+
| barrier_flow.rb:145:14:145:14 | x |
4968
controls
5069
| barrier-guards.rb:3:4:3:15 | ... == ... | barrier-guards.rb:4:5:4:7 | foo | true |
5170
| barrier-guards.rb:3:4:3:15 | ... == ... | barrier-guards.rb:6:5:6:7 | foo | false |
@@ -367,3 +386,97 @@ controls
367386
| barrier_flow.rb:69:12:69:23 | ... != ... | barrier_flow.rb:70:13:70:18 | return | true |
368387
| barrier_flow.rb:73:12:73:23 | ... != ... | barrier_flow.rb:73:9:75:11 | if ... | false |
369388
| barrier_flow.rb:73:12:73:23 | ... != ... | barrier_flow.rb:74:13:74:18 | return | true |
389+
| barrier_flow.rb:84:8:84:18 | ... == ... | barrier_flow.rb:84:8:84:34 | [true] ... and ... | true |
390+
| barrier_flow.rb:84:8:84:18 | ... == ... | barrier_flow.rb:84:24:84:24 | x | true |
391+
| barrier_flow.rb:84:8:84:18 | ... == ... | barrier_flow.rb:85:9:85:14 | self | true |
392+
| barrier_flow.rb:84:8:84:34 | [false] ... and ... | barrier_flow.rb:87:9:87:14 | self | false |
393+
| barrier_flow.rb:84:8:84:34 | [true] ... and ... | barrier_flow.rb:85:9:85:14 | self | true |
394+
| barrier_flow.rb:84:24:84:34 | ... == ... | barrier_flow.rb:84:8:84:34 | [true] ... and ... | true |
395+
| barrier_flow.rb:84:24:84:34 | ... == ... | barrier_flow.rb:85:9:85:14 | self | true |
396+
| barrier_flow.rb:90:8:90:18 | ... != ... | barrier_flow.rb:90:8:90:35 | [true] ... and ... | true |
397+
| barrier_flow.rb:90:8:90:18 | ... != ... | barrier_flow.rb:90:24:90:24 | x | true |
398+
| barrier_flow.rb:90:8:90:18 | ... != ... | barrier_flow.rb:91:9:91:14 | self | true |
399+
| barrier_flow.rb:90:8:90:35 | [false] ... and ... | barrier_flow.rb:93:9:93:14 | self | false |
400+
| barrier_flow.rb:90:8:90:35 | [true] ... and ... | barrier_flow.rb:91:9:91:14 | self | true |
401+
| barrier_flow.rb:90:24:90:35 | ... == ... | barrier_flow.rb:90:8:90:35 | [true] ... and ... | true |
402+
| barrier_flow.rb:90:24:90:35 | ... == ... | barrier_flow.rb:91:9:91:14 | self | true |
403+
| barrier_flow.rb:96:8:96:18 | ... == ... | barrier_flow.rb:96:8:96:35 | [true] ... and ... | true |
404+
| barrier_flow.rb:96:8:96:18 | ... == ... | barrier_flow.rb:96:24:96:24 | x | true |
405+
| barrier_flow.rb:96:8:96:18 | ... == ... | barrier_flow.rb:97:9:97:14 | self | true |
406+
| barrier_flow.rb:96:8:96:35 | [false] ... and ... | barrier_flow.rb:99:9:99:14 | self | false |
407+
| barrier_flow.rb:96:8:96:35 | [true] ... and ... | barrier_flow.rb:97:9:97:14 | self | true |
408+
| barrier_flow.rb:96:24:96:35 | ... != ... | barrier_flow.rb:96:8:96:35 | [true] ... and ... | true |
409+
| barrier_flow.rb:96:24:96:35 | ... != ... | barrier_flow.rb:97:9:97:14 | self | true |
410+
| barrier_flow.rb:102:8:102:19 | ... != ... | barrier_flow.rb:102:8:102:36 | [true] ... and ... | true |
411+
| barrier_flow.rb:102:8:102:19 | ... != ... | barrier_flow.rb:102:25:102:25 | x | true |
412+
| barrier_flow.rb:102:8:102:19 | ... != ... | barrier_flow.rb:103:9:103:14 | self | true |
413+
| barrier_flow.rb:102:8:102:36 | [false] ... and ... | barrier_flow.rb:105:9:105:14 | self | false |
414+
| barrier_flow.rb:102:8:102:36 | [true] ... and ... | barrier_flow.rb:103:9:103:14 | self | true |
415+
| barrier_flow.rb:102:25:102:36 | ... != ... | barrier_flow.rb:102:8:102:36 | [true] ... and ... | true |
416+
| barrier_flow.rb:102:25:102:36 | ... != ... | barrier_flow.rb:103:9:103:14 | self | true |
417+
| barrier_flow.rb:108:8:108:25 | [true] not ... | barrier_flow.rb:108:8:108:42 | [true] ... and ... | true |
418+
| barrier_flow.rb:108:8:108:25 | [true] not ... | barrier_flow.rb:108:31:108:31 | x | true |
419+
| barrier_flow.rb:108:8:108:25 | [true] not ... | barrier_flow.rb:109:9:109:14 | self | true |
420+
| barrier_flow.rb:108:8:108:42 | [false] ... and ... | barrier_flow.rb:111:9:111:14 | self | false |
421+
| barrier_flow.rb:108:8:108:42 | [true] ... and ... | barrier_flow.rb:109:9:109:14 | self | true |
422+
| barrier_flow.rb:108:12:108:25 | [false] ( ... ) | barrier_flow.rb:108:8:108:25 | [true] not ... | false |
423+
| barrier_flow.rb:108:12:108:25 | [false] ( ... ) | barrier_flow.rb:108:8:108:42 | [true] ... and ... | false |
424+
| barrier_flow.rb:108:12:108:25 | [false] ( ... ) | barrier_flow.rb:108:31:108:31 | x | false |
425+
| barrier_flow.rb:108:12:108:25 | [false] ( ... ) | barrier_flow.rb:109:9:109:14 | self | false |
426+
| barrier_flow.rb:108:12:108:25 | [true] ( ... ) | barrier_flow.rb:108:8:108:25 | [false] not ... | true |
427+
| barrier_flow.rb:108:13:108:24 | ... == ... | barrier_flow.rb:108:8:108:25 | [false] not ... | true |
428+
| barrier_flow.rb:108:13:108:24 | ... == ... | barrier_flow.rb:108:8:108:25 | [true] not ... | false |
429+
| barrier_flow.rb:108:13:108:24 | ... == ... | barrier_flow.rb:108:8:108:42 | [true] ... and ... | false |
430+
| barrier_flow.rb:108:13:108:24 | ... == ... | barrier_flow.rb:108:12:108:25 | [false] ( ... ) | false |
431+
| barrier_flow.rb:108:13:108:24 | ... == ... | barrier_flow.rb:108:12:108:25 | [true] ( ... ) | true |
432+
| barrier_flow.rb:108:13:108:24 | ... == ... | barrier_flow.rb:108:31:108:31 | x | false |
433+
| barrier_flow.rb:108:13:108:24 | ... == ... | barrier_flow.rb:109:9:109:14 | self | false |
434+
| barrier_flow.rb:108:31:108:42 | ... != ... | barrier_flow.rb:108:8:108:42 | [true] ... and ... | true |
435+
| barrier_flow.rb:108:31:108:42 | ... != ... | barrier_flow.rb:109:9:109:14 | self | true |
436+
| barrier_flow.rb:118:8:118:19 | ... == ... | barrier_flow.rb:118:8:118:35 | [false] ... or ... | false |
437+
| barrier_flow.rb:118:8:118:19 | ... == ... | barrier_flow.rb:118:24:118:24 | x | false |
438+
| barrier_flow.rb:118:8:118:19 | ... == ... | barrier_flow.rb:121:9:121:14 | self | false |
439+
| barrier_flow.rb:118:8:118:35 | [false] ... or ... | barrier_flow.rb:121:9:121:14 | self | false |
440+
| barrier_flow.rb:118:8:118:35 | [true] ... or ... | barrier_flow.rb:119:9:119:14 | self | true |
441+
| barrier_flow.rb:118:24:118:35 | ... == ... | barrier_flow.rb:118:8:118:35 | [false] ... or ... | false |
442+
| barrier_flow.rb:118:24:118:35 | ... == ... | barrier_flow.rb:121:9:121:14 | self | false |
443+
| barrier_flow.rb:124:8:124:18 | ... != ... | barrier_flow.rb:124:8:124:34 | [false] ... or ... | false |
444+
| barrier_flow.rb:124:8:124:18 | ... != ... | barrier_flow.rb:124:23:124:23 | x | false |
445+
| barrier_flow.rb:124:8:124:18 | ... != ... | barrier_flow.rb:127:9:127:14 | self | false |
446+
| barrier_flow.rb:124:8:124:34 | [false] ... or ... | barrier_flow.rb:127:9:127:14 | self | false |
447+
| barrier_flow.rb:124:8:124:34 | [true] ... or ... | barrier_flow.rb:125:9:125:14 | self | true |
448+
| barrier_flow.rb:124:23:124:34 | ... == ... | barrier_flow.rb:124:8:124:34 | [false] ... or ... | false |
449+
| barrier_flow.rb:124:23:124:34 | ... == ... | barrier_flow.rb:127:9:127:14 | self | false |
450+
| barrier_flow.rb:130:8:130:18 | ... == ... | barrier_flow.rb:130:8:130:34 | [false] ... or ... | false |
451+
| barrier_flow.rb:130:8:130:18 | ... == ... | barrier_flow.rb:130:23:130:23 | x | false |
452+
| barrier_flow.rb:130:8:130:18 | ... == ... | barrier_flow.rb:133:9:133:14 | self | false |
453+
| barrier_flow.rb:130:8:130:34 | [false] ... or ... | barrier_flow.rb:133:9:133:14 | self | false |
454+
| barrier_flow.rb:130:8:130:34 | [true] ... or ... | barrier_flow.rb:131:9:131:14 | self | true |
455+
| barrier_flow.rb:130:23:130:34 | ... != ... | barrier_flow.rb:130:8:130:34 | [false] ... or ... | false |
456+
| barrier_flow.rb:130:23:130:34 | ... != ... | barrier_flow.rb:133:9:133:14 | self | false |
457+
| barrier_flow.rb:136:8:136:18 | ... != ... | barrier_flow.rb:136:8:136:33 | [false] ... or ... | false |
458+
| barrier_flow.rb:136:8:136:18 | ... != ... | barrier_flow.rb:136:23:136:23 | x | false |
459+
| barrier_flow.rb:136:8:136:18 | ... != ... | barrier_flow.rb:139:9:139:14 | self | false |
460+
| barrier_flow.rb:136:8:136:33 | [false] ... or ... | barrier_flow.rb:139:9:139:14 | self | false |
461+
| barrier_flow.rb:136:8:136:33 | [true] ... or ... | barrier_flow.rb:137:9:137:14 | self | true |
462+
| barrier_flow.rb:136:23:136:33 | ... != ... | barrier_flow.rb:136:8:136:33 | [false] ... or ... | false |
463+
| barrier_flow.rb:136:23:136:33 | ... != ... | barrier_flow.rb:139:9:139:14 | self | false |
464+
| barrier_flow.rb:142:8:142:24 | [false] not ... | barrier_flow.rb:142:8:142:39 | [false] ... or ... | false |
465+
| barrier_flow.rb:142:8:142:24 | [false] not ... | barrier_flow.rb:142:29:142:29 | x | false |
466+
| barrier_flow.rb:142:8:142:24 | [false] not ... | barrier_flow.rb:145:9:145:14 | self | false |
467+
| barrier_flow.rb:142:8:142:39 | [false] ... or ... | barrier_flow.rb:145:9:145:14 | self | false |
468+
| barrier_flow.rb:142:8:142:39 | [true] ... or ... | barrier_flow.rb:143:9:143:14 | self | true |
469+
| barrier_flow.rb:142:12:142:24 | [false] ( ... ) | barrier_flow.rb:142:8:142:24 | [true] not ... | false |
470+
| barrier_flow.rb:142:12:142:24 | [true] ( ... ) | barrier_flow.rb:142:8:142:24 | [false] not ... | true |
471+
| barrier_flow.rb:142:12:142:24 | [true] ( ... ) | barrier_flow.rb:142:8:142:39 | [false] ... or ... | true |
472+
| barrier_flow.rb:142:12:142:24 | [true] ( ... ) | barrier_flow.rb:142:29:142:29 | x | true |
473+
| barrier_flow.rb:142:12:142:24 | [true] ( ... ) | barrier_flow.rb:145:9:145:14 | self | true |
474+
| barrier_flow.rb:142:13:142:23 | ... == ... | barrier_flow.rb:142:8:142:24 | [false] not ... | true |
475+
| barrier_flow.rb:142:13:142:23 | ... == ... | barrier_flow.rb:142:8:142:24 | [true] not ... | false |
476+
| barrier_flow.rb:142:13:142:23 | ... == ... | barrier_flow.rb:142:8:142:39 | [false] ... or ... | true |
477+
| barrier_flow.rb:142:13:142:23 | ... == ... | barrier_flow.rb:142:12:142:24 | [false] ( ... ) | false |
478+
| barrier_flow.rb:142:13:142:23 | ... == ... | barrier_flow.rb:142:12:142:24 | [true] ( ... ) | true |
479+
| barrier_flow.rb:142:13:142:23 | ... == ... | barrier_flow.rb:142:29:142:29 | x | true |
480+
| barrier_flow.rb:142:13:142:23 | ... == ... | barrier_flow.rb:145:9:145:14 | self | true |
481+
| barrier_flow.rb:142:29:142:39 | ... != ... | barrier_flow.rb:142:8:142:39 | [false] ... or ... | false |
482+
| barrier_flow.rb:142:29:142:39 | ... != ... | barrier_flow.rb:145:9:145:14 | self | false |

ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,71 @@ def m9(b)
7777

7878
sink x
7979
end
80+
81+
def m10
82+
x = source(10)
83+
84+
if x == "safe" and x == "safe" then # $ guarded
85+
sink x # $ guarded
86+
else
87+
sink x # $ hasValueFlow=10
88+
end
89+
90+
if x != "safe" and x == "safe2" then
91+
sink x # $ guarded
92+
else
93+
sink x # $ hasValueFlow=10
94+
end
95+
96+
if x == "safe" and x != "safe2" then # $ guarded
97+
sink x # $ guarded
98+
else
99+
sink x # $ hasValueFlow=10
100+
end
101+
102+
if x != "safe1" and x != "safe2" then
103+
sink x # $ hasValueFlow=10
104+
else
105+
sink x # $ guarded
106+
end
107+
108+
if not (x == "safe1") and x != "safe2" then
109+
sink x # $ hasValueFlow=10
110+
else
111+
sink x # $ guarded
112+
end
113+
end
114+
115+
def m11
116+
x = source(11)
117+
118+
if x == "safe1" or x == "safe2" then
119+
sink x # $ guarded
120+
else
121+
sink x # $ hasValueFlow=11
122+
end
123+
124+
if x != "safe" or x == "safe2" then # $ guarded
125+
sink x # $ hasValueFlow=11
126+
else
127+
sink x # $ guarded
128+
end
129+
130+
if x == "safe" or x != "safe2" then
131+
sink x # $ hasValueFlow=11
132+
else
133+
sink x # $ guarded
134+
end
135+
136+
if x != "safe" or x != "safe" then # $ guarded
137+
sink x # $ hasValueFlow=11
138+
else
139+
sink x # $ guarded
140+
end
141+
142+
if not (x == "safe") or x != "safe" then # $ guarded
143+
sink x # $ hasValueFlow=11
144+
else
145+
sink x # $ guarded
146+
end
147+
end

0 commit comments

Comments
 (0)