mirror of
https://github.com/github/codeql.git
synced 2026-01-29 14:23:03 +01:00
Add test for conversion panic
This commit is contained in:
64
ql/test/extractor-tests/go1.17/CFG.expected
Normal file
64
ql/test/extractor-tests/go1.17/CFG.expected
Normal file
@@ -0,0 +1,64 @@
|
||||
nodes
|
||||
edges
|
||||
| conversions.go:0:0:0:0 | entry | conversions.go:3:1:3:15 | skip |
|
||||
| conversions.go:3:1:3:15 | skip | conversions.go:5:6:5:8 | skip |
|
||||
| conversions.go:5:1:5:1 | entry | conversions.go:5:10:5:10 | argument corresponding to _ |
|
||||
| conversions.go:5:1:5:29 | function declaration | conversions.go:7:6:7:9 | skip |
|
||||
| conversions.go:5:6:5:8 | skip | conversions.go:5:1:5:29 | function declaration |
|
||||
| conversions.go:5:10:5:10 | argument corresponding to _ | conversions.go:5:10:5:10 | initialization of _ |
|
||||
| conversions.go:5:10:5:10 | initialization of _ | conversions.go:5:28:5:29 | skip |
|
||||
| conversions.go:5:28:5:29 | skip | conversions.go:5:29:5:29 | exit |
|
||||
| conversions.go:7:1:7:1 | entry | conversions.go:8:6:8:6 | skip |
|
||||
| conversions.go:7:1:26:1 | function declaration | conversions.go:0:0:0:0 | exit |
|
||||
| conversions.go:7:6:7:9 | skip | conversions.go:7:1:26:1 | function declaration |
|
||||
| conversions.go:8:6:8:6 | assignment to a | conversions.go:10:2:10:2 | skip |
|
||||
| conversions.go:8:6:8:6 | skip | conversions.go:8:6:8:6 | zero value for a |
|
||||
| conversions.go:8:6:8:6 | zero value for a | conversions.go:8:6:8:6 | assignment to a |
|
||||
| conversions.go:10:2:10:2 | assignment to b | conversions.go:11:2:11:4 | use |
|
||||
| conversions.go:10:2:10:2 | skip | conversions.go:10:7:10:16 | selection of Add |
|
||||
| conversions.go:10:7:10:16 | selection of Add | conversions.go:10:18:10:18 | a |
|
||||
| conversions.go:10:7:10:23 | call to Add | conversions.go:10:2:10:2 | assignment to b |
|
||||
| conversions.go:10:18:10:18 | a | conversions.go:10:21:10:22 | 10 |
|
||||
| conversions.go:10:21:10:22 | 10 | conversions.go:10:7:10:23 | call to Add |
|
||||
| conversions.go:11:2:11:4 | use | conversions.go:11:6:11:6 | b |
|
||||
| conversions.go:11:2:11:7 | call to use | conversions.go:13:6:13:8 | skip |
|
||||
| conversions.go:11:2:11:7 | call to use | conversions.go:26:1:26:1 | exit |
|
||||
| conversions.go:11:6:11:6 | b | conversions.go:11:2:11:7 | call to use |
|
||||
| conversions.go:13:6:13:8 | assignment to arr | conversions.go:14:2:14:6 | skip |
|
||||
| conversions.go:13:6:13:8 | skip | conversions.go:13:6:13:8 | zero value for arr |
|
||||
| conversions.go:13:6:13:8 | zero value for arr | conversions.go:13:6:13:8 | assignment to arr |
|
||||
| conversions.go:14:2:14:6 | assignment to slice | conversions.go:17:2:17:4 | skip |
|
||||
| conversions.go:14:2:14:6 | skip | conversions.go:14:11:14:22 | selection of Slice |
|
||||
| conversions.go:14:11:14:22 | selection of Slice | conversions.go:14:24:14:26 | arr |
|
||||
| conversions.go:14:11:14:31 | call to Slice | conversions.go:14:2:14:6 | assignment to slice |
|
||||
| conversions.go:14:24:14:26 | arr | conversions.go:14:29:14:30 | 20 |
|
||||
| conversions.go:14:29:14:30 | 20 | conversions.go:14:11:14:31 | call to Slice |
|
||||
| conversions.go:17:2:17:4 | assignment to ptr | conversions.go:18:2:18:4 | use |
|
||||
| conversions.go:17:2:17:4 | skip | conversions.go:17:20:17:24 | slice |
|
||||
| conversions.go:17:9:17:25 | type conversion | conversions.go:17:2:17:4 | assignment to ptr |
|
||||
| conversions.go:17:9:17:25 | type conversion | conversions.go:26:1:26:1 | exit |
|
||||
| conversions.go:17:20:17:24 | slice | conversions.go:17:9:17:25 | type conversion |
|
||||
| conversions.go:18:2:18:4 | use | conversions.go:18:6:18:8 | ptr |
|
||||
| conversions.go:18:2:18:9 | call to use | conversions.go:21:2:21:4 | skip |
|
||||
| conversions.go:18:2:18:9 | call to use | conversions.go:26:1:26:1 | exit |
|
||||
| conversions.go:18:6:18:8 | ptr | conversions.go:18:2:18:9 | call to use |
|
||||
| conversions.go:21:2:21:4 | assignment to str | conversions.go:22:2:22:6 | skip |
|
||||
| conversions.go:21:2:21:4 | skip | conversions.go:21:9:21:18 | "a string" |
|
||||
| conversions.go:21:9:21:18 | "a string" | conversions.go:21:2:21:4 | assignment to str |
|
||||
| conversions.go:22:2:22:6 | assignment to bytes | conversions.go:23:2:23:4 | use |
|
||||
| conversions.go:22:2:22:6 | skip | conversions.go:22:18:22:20 | str |
|
||||
| conversions.go:22:11:22:21 | type conversion | conversions.go:22:2:22:6 | assignment to bytes |
|
||||
| conversions.go:22:18:22:20 | str | conversions.go:22:11:22:21 | type conversion |
|
||||
| conversions.go:23:2:23:4 | use | conversions.go:23:6:23:10 | bytes |
|
||||
| conversions.go:23:2:23:11 | call to use | conversions.go:24:2:24:6 | skip |
|
||||
| conversions.go:23:2:23:11 | call to use | conversions.go:26:1:26:1 | exit |
|
||||
| conversions.go:23:6:23:10 | bytes | conversions.go:23:2:23:11 | call to use |
|
||||
| conversions.go:24:2:24:6 | assignment to runes | conversions.go:25:2:25:4 | use |
|
||||
| conversions.go:24:2:24:6 | skip | conversions.go:24:18:24:20 | str |
|
||||
| conversions.go:24:11:24:21 | type conversion | conversions.go:24:2:24:6 | assignment to runes |
|
||||
| conversions.go:24:18:24:20 | str | conversions.go:24:11:24:21 | type conversion |
|
||||
| conversions.go:25:2:25:4 | use | conversions.go:25:6:25:10 | runes |
|
||||
| conversions.go:25:2:25:11 | call to use | conversions.go:26:1:26:1 | exit |
|
||||
| conversions.go:25:6:25:10 | runes | conversions.go:25:2:25:11 | call to use |
|
||||
#select
|
||||
| |
|
||||
9
ql/test/extractor-tests/go1.17/CFG.ql
Normal file
9
ql/test/extractor-tests/go1.17/CFG.ql
Normal file
@@ -0,0 +1,9 @@
|
||||
import go
|
||||
|
||||
query predicate nodes(ControlFlow::Node nd) { none() }
|
||||
|
||||
query predicate edges(ControlFlow::Node pred, ControlFlow::Node succ) {
|
||||
succ = pred.getASuccessor()
|
||||
}
|
||||
|
||||
select ""
|
||||
26
ql/test/extractor-tests/go1.17/conversions.go
Normal file
26
ql/test/extractor-tests/go1.17/conversions.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
func use(_ ...interface{}) {}
|
||||
|
||||
func main() {
|
||||
var a unsafe.Pointer
|
||||
|
||||
b := unsafe.Add(a, 10)
|
||||
use(b)
|
||||
|
||||
var arr *int
|
||||
slice := unsafe.Slice(arr, 20)
|
||||
|
||||
// may panic
|
||||
ptr := (*[10]int)(slice)
|
||||
use(ptr)
|
||||
|
||||
// cannot panic
|
||||
str := "a string"
|
||||
bytes := []byte(str)
|
||||
use(bytes)
|
||||
runes := []rune(str)
|
||||
use(runes)
|
||||
}
|
||||
3
ql/test/extractor-tests/go1.17/go.mod
Normal file
3
ql/test/extractor-tests/go1.17/go.mod
Normal file
@@ -0,0 +1,3 @@
|
||||
module extractor-tests/go117
|
||||
|
||||
go 1.17
|
||||
Reference in New Issue
Block a user