Skip to content

Commit 035cbfd

Browse files
committed
Fix invalidAbruptCompletionOrigin results
1 parent f298ef0 commit 035cbfd

18 files changed

Lines changed: 9 additions & 129 deletions

File tree

go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -690,12 +690,13 @@ module CfgImpl {
690690
c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and
691691
always = false
692692
or
693-
ast instanceof Go::DeferStmt and
693+
ast instanceof Go::CallExpr and
694+
ast = any(Go::DeferStmt defer).getCall() and
694695
(
695-
not exists(ast.(Go::DeferStmt).getCall().getTarget()) or
696-
ast.(Go::DeferStmt).getCall().getTarget().mayPanic()
696+
not exists(ast.(Go::CallExpr).getTarget()) or
697+
ast.(Go::CallExpr).getTarget().mayPanic()
697698
) and
698-
n.isAdditional(ast.(Go::DeferStmt).getCall(), "defer-invoke") and
699+
n.isAdditional(ast, "defer-invoke") and
699700
c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and
700701
always = false
701702
or
@@ -711,11 +712,12 @@ module CfgImpl {
711712
c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and
712713
always = true
713714
or
714-
ast instanceof Go::DeferStmt and
715-
exists(Go::Function target | target = ast.(Go::DeferStmt).getCall().getTarget() |
715+
ast instanceof Go::CallExpr and
716+
ast = any(Go::DeferStmt defer).getCall() and
717+
exists(Go::Function target | target = ast.(Go::CallExpr).getTarget() |
716718
target.mustPanic() or target.mustNotReturnNormally()
717719
) and
718-
n.isAdditional(ast.(Go::DeferStmt).getCall(), "defer-invoke") and
720+
n.isAdditional(ast, "defer-invoke") and
719721
c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and
720722
always = true
721723
or
Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +0,0 @@
1-
consistencyOverview
2-
| invalidAbruptCompletionOrigin | 4 |
3-
invalidAbruptCompletionOrigin
4-
| ImproperLdapAuth.go:25:2:25:16 | defer statement | ImproperLdapAuth.go:25:8:25:16 | defer-invoke call to Close |
5-
| ImproperLdapAuth.go:46:2:46:16 | defer statement | ImproperLdapAuth.go:46:8:46:16 | defer-invoke call to Close |
6-
| ImproperLdapAuth.go:71:2:71:16 | defer statement | ImproperLdapAuth.go:71:8:71:16 | defer-invoke call to Close |
7-
| ImproperLdapAuth.go:94:2:94:16 | defer statement | ImproperLdapAuth.go:94:8:94:16 | defer-invoke call to Close |
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +0,0 @@
1-
consistencyOverview
2-
| invalidAbruptCompletionOrigin | 2 |
3-
invalidAbruptCompletionOrigin
4-
| test.go:102:2:102:19 | defer statement | test.go:102:8:102:19 | defer-invoke call to Close |
5-
| test.go:443:2:443:19 | defer statement | test.go:443:8:443:19 | defer-invoke call to Close |
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +0,0 @@
1-
consistencyOverview
2-
| invalidAbruptCompletionOrigin | 1 |
3-
invalidAbruptCompletionOrigin
4-
| WebCacheDeceptionBad.go:29:2:29:21 | defer statement | WebCacheDeceptionBad.go:29:8:29:21 | defer-invoke call to Unlock |

go/ql/test/experimental/InconsistentCode/CONSISTENCY/CfgConsistency.expected

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
11
consistencyOverview
2-
| invalidAbruptCompletionOrigin | 7 |
32
| multipleSuccessors | 8 |
43
| selfLoop | 1 |
5-
invalidAbruptCompletionOrigin
6-
| DeferInLoop.go:8:3:8:20 | defer statement | DeferInLoop.go:8:9:8:20 | defer-invoke call to Close |
7-
| DeferInLoopGood.go:7:2:7:19 | defer statement | DeferInLoopGood.go:7:8:7:19 | defer-invoke call to Close |
8-
| test.go:6:3:6:14 | defer statement | test.go:6:9:6:14 | defer-invoke call to test |
9-
| test.go:11:4:11:15 | defer statement | test.go:11:10:11:15 | defer-invoke call to test |
10-
| test.go:16:3:16:14 | defer statement | test.go:16:9:16:14 | defer-invoke call to test |
11-
| test.go:20:3:20:14 | defer statement | test.go:20:9:20:14 | defer-invoke call to test |
12-
| test.go:24:3:24:14 | defer statement | test.go:24:9:24:14 | defer-invoke call to test |
134
multipleSuccessors
145
| DeferInLoop.go:6:2:13:2 | After range statement | successor | DeferInLoop.go:5:36:14:1 | After block statement |
156
| DeferInLoop.go:6:2:13:2 | After range statement | successor | DeferInLoop.go:8:9:8:20 | defer-invoke call to Close |

go/ql/test/library-tests/semmle/go/PrintAst/CONSISTENCY/CfgConsistency.expected

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
consistencyOverview
22
| deadEnd | 1 |
3-
| invalidAbruptCompletionOrigin | 2 |
43
| multipleSuccessors | 6 |
54
deadEnd
65
| input.go:61:2:61:10 | select statement |
7-
invalidAbruptCompletionOrigin
8-
| input.go:67:3:67:35 | defer statement | input.go:67:9:67:35 | defer-invoke function call |
9-
| input.go:69:3:69:36 | defer statement | input.go:69:9:69:36 | defer-invoke function call |
106
multipleSuccessors
117
| input.go:50:2:59:2 | select statement | successor | input.go:51:2:52:31 | comm clause |
128
| input.go:50:2:59:2 | select statement | successor | input.go:53:2:55:16 | comm clause |

go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/CONSISTENCY/CfgConsistency.expected

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,9 @@
11
consistencyOverview
22
| deadEnd | 1 |
3-
| invalidAbruptCompletionOrigin | 23 |
43
| multipleSuccessors | 24 |
54
| selfLoop | 1 |
65
deadEnd
76
| stmts.go:61:2:61:10 | select statement |
8-
invalidAbruptCompletionOrigin
9-
| epilogues.go:60:2:60:33 | defer statement | epilogues.go:60:8:60:33 | defer-invoke call to log |
10-
| epilogues.go:68:2:68:24 | defer statement | epilogues.go:68:8:68:24 | defer-invoke call to logValue |
11-
| epilogues.go:69:2:69:25 | defer statement | epilogues.go:69:8:69:25 | defer-invoke call to log |
12-
| epilogues.go:78:2:80:15 | defer statement | epilogues.go:78:8:80:15 | defer-invoke function call |
13-
| epilogues.go:88:2:92:4 | defer statement | epilogues.go:88:8:92:4 | defer-invoke function call |
14-
| epilogues.go:103:2:103:19 | defer statement | epilogues.go:103:8:103:19 | defer-invoke call to epiRecover |
15-
| epilogues.go:116:2:116:19 | defer statement | epilogues.go:116:8:116:19 | defer-invoke call to epiRecover |
16-
| stmts7.go:14:2:14:21 | defer statement | stmts7.go:14:8:14:21 | defer-invoke call to recoverPanic |
17-
| stmts7.go:27:2:27:20 | defer statement | stmts7.go:27:8:27:20 | defer-invoke call to fn |
18-
| stmts7.go:28:2:28:23 | defer statement | stmts7.go:28:8:28:23 | defer-invoke call to fn |
19-
| stmts7.go:34:2:34:21 | defer statement | stmts7.go:34:8:34:21 | defer-invoke call to recoverPanic |
20-
| stmts7.go:39:2:39:21 | defer statement | stmts7.go:39:8:39:21 | defer-invoke call to recoverPanic |
21-
| stmts7.go:40:2:40:30 | defer statement | stmts7.go:40:8:40:30 | defer-invoke call to panic |
22-
| stmts7.go:44:2:44:36 | defer statement | stmts7.go:44:8:44:36 | defer-invoke call to panic |
23-
| stmts7.go:48:2:48:21 | defer statement | stmts7.go:48:8:48:21 | defer-invoke call to recoverPanic |
24-
| stmts7.go:49:2:49:17 | defer statement | stmts7.go:49:8:49:17 | defer-invoke call to Exit |
25-
| stmts7.go:53:2:53:21 | defer statement | stmts7.go:53:8:53:21 | defer-invoke call to recoverPanic |
26-
| stmts7.go:59:3:59:22 | defer statement | stmts7.go:59:9:59:22 | defer-invoke call to recoverPanic |
27-
| stmts7.go:66:3:66:22 | defer statement | stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic |
28-
| stmts7.go:74:2:74:21 | defer statement | stmts7.go:74:8:74:21 | defer-invoke call to recoverPanic |
29-
| stmts7.go:83:2:83:21 | defer statement | stmts7.go:83:8:83:21 | defer-invoke call to recoverPanic |
30-
| stmts.go:67:3:67:35 | defer statement | stmts.go:67:9:67:35 | defer-invoke function call |
31-
| stmts.go:69:3:69:36 | defer statement | stmts.go:69:9:69:36 | defer-invoke function call |
327
multipleSuccessors
338
| stmts2.go:16:2:26:2 | select statement | successor | stmts2.go:17:2:17:15 | comm clause |
349
| stmts2.go:16:2:26:2 | select statement | successor | stmts2.go:18:2:19:10 | comm clause |
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +0,0 @@
1-
consistencyOverview
2-
| invalidAbruptCompletionOrigin | 1 |
3-
invalidAbruptCompletionOrigin
4-
| main.go:41:2:43:4 | defer statement | main.go:41:8:43:4 | defer-invoke function call |
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +0,0 @@
1-
consistencyOverview
2-
| invalidAbruptCompletionOrigin | 1 |
3-
invalidAbruptCompletionOrigin
4-
| main.go:35:2:37:4 | defer statement | main.go:35:8:37:4 | defer-invoke function call |
Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +0,0 @@
1-
consistencyOverview
2-
| invalidAbruptCompletionOrigin | 9 |
3-
invalidAbruptCompletionOrigin
4-
| test_database_sql.go:15:2:15:19 | defer statement | test_database_sql.go:15:8:15:19 | defer-invoke call to Close |
5-
| test_database_sql.go:49:2:49:19 | defer statement | test_database_sql.go:49:8:49:19 | defer-invoke call to Close |
6-
| test_database_sql.go:87:2:87:19 | defer statement | test_database_sql.go:87:8:87:19 | defer-invoke call to Close |
7-
| test_database_sql.go:128:2:128:19 | defer statement | test_database_sql.go:128:8:128:19 | defer-invoke call to Close |
8-
| test_gorm.go:20:2:20:19 | defer statement | test_gorm.go:20:8:20:19 | defer-invoke call to Close |
9-
| test_jmoiron_sqlx.go:89:2:89:19 | defer statement | test_jmoiron_sqlx.go:89:8:89:19 | defer-invoke call to Close |
10-
| test_jmoiron_sqlx.go:151:2:151:19 | defer statement | test_jmoiron_sqlx.go:151:8:151:19 | defer-invoke call to Close |
11-
| test_jmoiron_sqlx.go:207:2:207:19 | defer statement | test_jmoiron_sqlx.go:207:8:207:19 | defer-invoke call to Close |
12-
| test_jmoiron_sqlx.go:263:2:263:19 | defer statement | test_jmoiron_sqlx.go:263:8:263:19 | defer-invoke call to Close |

0 commit comments

Comments
 (0)