Skip to content

Commit 8fc3b00

Browse files
committed
Revert "Convert gogf/gf sql-injection sinks to MaD"
This reverts commit db559f7.
1 parent e7f788a commit 8fc3b00

File tree

7 files changed

+112
-140
lines changed

7 files changed

+112
-140
lines changed

go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.yml

Lines changed: 0 additions & 57 deletions
This file was deleted.

go/ql/lib/semmle/go/frameworks/SQL.qll

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ module SQL {
8181
/** A string that might identify package `go-pg/pg/orm` or a specific version of it. */
8282
private string gopgorm() { result = package("github.com/go-pg/pg", "orm") }
8383

84+
/** A string that might identify package `github.com/gogf/gf/database/gdb` or a specific version of it. */
85+
private string gogf() { result = package("github.com/gogf/gf", "database/gdb") }
86+
8487
/**
8588
* A string argument to an API of `go-pg/pg` that is directly interpreted as SQL without
8689
* taking syntactic structure into account.
@@ -145,6 +148,46 @@ module SQL {
145148
)
146149
}
147150
}
151+
152+
/**
153+
* A string argument to an API of `github.com/gogf/gf/database/gdb`, or a specific version of it, that is directly interpreted as SQL without
154+
* taking syntactic structure into account.
155+
*/
156+
private class GogfQueryString extends Range {
157+
GogfQueryString() {
158+
exists(Method m, string name | m.implements(gogf(), ["DB", "Core", "TX"], name) |
159+
// func (c *Core) Exec(sql string, args ...interface{}) (result sql.Result, err error)
160+
// func (c *Core) GetAll(sql string, args ...interface{}) (Result, error)
161+
// func (c *Core) GetArray(sql string, args ...interface{}) ([]Value, error)
162+
// func (c *Core) GetCount(sql string, args ...interface{}) (int, error)
163+
// func (c *Core) GetOne(sql string, args ...interface{}) (Record, error)
164+
// func (c *Core) GetValue(sql string, args ...interface{}) (Value, error)
165+
// func (c *Core) Prepare(sql string, execOnMaster ...bool) (*Stmt, error)
166+
// func (c *Core) Query(sql string, args ...interface{}) (rows *sql.Rows, err error)
167+
// func (c *Core) Raw(rawSql string, args ...interface{}) *Model
168+
name =
169+
[
170+
"Query", "Exec", "Prepare", "GetAll", "GetOne", "GetValue", "GetArray", "GetCount",
171+
"Raw"
172+
] and
173+
this = m.getACall().getArgument(0)
174+
or
175+
// func (c *Core) GetScan(pointer interface{}, sql string, args ...interface{}) error
176+
// func (c *Core) GetStruct(pointer interface{}, sql string, args ...interface{}) error
177+
// func (c *Core) GetStructs(pointer interface{}, sql string, args ...interface{}) error
178+
name = ["GetScan", "GetStruct", "GetStructs"] and
179+
this = m.getACall().getArgument(1)
180+
or
181+
// func (c *Core) DoCommit(ctx context.Context, link Link, sql string, args []interface{}) (newSql string, newArgs []interface{}, err error)
182+
// func (c *Core) DoExec(ctx context.Context, link Link, sql string, args ...interface{}) (result sql.Result, err error)
183+
// func (c *Core) DoGetAll(ctx context.Context, link Link, sql string, args ...interface{}) (result Result, err error)
184+
// func (c *Core) DoPrepare(ctx context.Context, link Link, sql string) (*Stmt, error)
185+
// func (c *Core) DoQuery(ctx context.Context, link Link, sql string, args ...interface{}) (rows *sql.Rows, err error)
186+
name = ["DoGetAll", "DoQuery", "DoExec", "DoCommit", "DoPrepare"] and
187+
this = m.getACall().getArgument(2)
188+
)
189+
}
190+
}
148191
}
149192

150193
/** A model for sinks of GORM. */

go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/QueryString.expected

Lines changed: 0 additions & 3 deletions
This file was deleted.

go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/QueryString.ql

Lines changed: 0 additions & 60 deletions
This file was deleted.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
| gogf.go:12:9:12:11 | sql |
2+
| gogf.go:13:11:13:13 | sql |
3+
| gogf.go:14:13:14:15 | sql |
4+
| gogf.go:15:13:15:15 | sql |
5+
| gogf.go:16:11:16:13 | sql |
6+
| gogf.go:17:13:17:15 | sql |
7+
| gogf.go:18:12:18:14 | sql |
8+
| gogf.go:19:10:19:12 | sql |
9+
| gogf.go:20:8:20:10 | sql |
10+
| gogf.go:21:17:21:19 | sql |
11+
| gogf.go:22:19:22:21 | sql |
12+
| gogf.go:23:20:23:22 | sql |
13+
| gogf.go:24:23:24:25 | sql |
14+
| gogf.go:25:21:25:23 | sql |
15+
| gogf.go:26:23:26:25 | sql |
16+
| gogf.go:27:22:27:24 | sql |
17+
| gogf.go:28:24:28:26 | sql |
18+
| gogf.go:32:9:32:11 | sql |
19+
| gogf.go:33:11:33:13 | sql |
20+
| gogf.go:34:13:34:15 | sql |
21+
| gogf.go:35:13:35:15 | sql |
22+
| gogf.go:36:11:36:13 | sql |
23+
| gogf.go:37:13:37:15 | sql |
24+
| gogf.go:38:12:38:14 | sql |
25+
| gogf.go:39:10:39:12 | sql |
26+
| gogf.go:40:8:40:10 | sql |
27+
| gogf.go:41:17:41:19 | sql |
28+
| gogf.go:42:23:42:25 | sql |
29+
| gogf.go:43:21:43:23 | sql |
30+
| gogf.go:44:23:44:25 | sql |
31+
| gogf.go:45:22:45:24 | sql |
32+
| gogf.go:46:24:46:26 | sql |
33+
| gogf.go:51:9:51:11 | sql |
34+
| gogf.go:52:11:52:13 | sql |
35+
| gogf.go:53:13:53:15 | sql |
36+
| gogf.go:54:13:54:15 | sql |
37+
| gogf.go:55:11:55:13 | sql |
38+
| gogf.go:56:13:56:15 | sql |
39+
| gogf.go:57:12:57:14 | sql |
40+
| gogf.go:58:10:58:12 | sql |
41+
| gogf.go:59:8:59:10 | sql |
42+
| gogf.go:60:17:60:19 | sql |
43+
| gogf.go:61:23:61:25 | sql |
44+
| gogf.go:62:21:62:23 | sql |
45+
| gogf.go:63:23:63:25 | sql |
46+
| gogf.go:64:22:64:24 | sql |
47+
| gogf.go:65:24:65:26 | sql |

go/ql/test/library-tests/semmle/go/frameworks/SQL/gogf/gogf.go

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@ package main
44
//go:generate depstubber -vendor github.com/gogf/gf/database/gdb DB,Core,TX ""
55

66
import (
7-
"context"
8-
97
"github.com/gogf/gf/database/gdb"
108
"github.com/gogf/gf/frame/g"
119
)
1210

13-
func gogfCoreTest(sql string, c *gdb.Core, ctx context.Context) {
11+
func gogfCoreTest(sql string, c *gdb.Core) {
1412
c.Exec(sql, nil) // $ querystring=sql
1513
c.GetAll(sql, nil) // $ querystring=sql
1614
c.GetArray(sql, nil) // $ querystring=sql
@@ -23,14 +21,14 @@ func gogfCoreTest(sql string, c *gdb.Core, ctx context.Context) {
2321
c.GetScan(nil, sql, nil) // $ querystring=sql
2422
c.GetStruct(nil, sql, nil) // $ querystring=sql
2523
c.GetStructs(nil, sql, nil) // $ querystring=sql
26-
c.DoCommit(ctx, nil, sql, nil) // $ querystring=sql
27-
c.DoExec(ctx, nil, sql, nil) // $ querystring=sql
28-
c.DoGetAll(ctx, nil, sql, nil) // $ querystring=sql
29-
c.DoQuery(ctx, nil, sql, nil) // $ querystring=sql
30-
c.DoPrepare(ctx, nil, sql) // $ querystring=sql
24+
c.DoCommit(nil, nil, sql, nil) // $ querystring=sql
25+
c.DoExec(nil, nil, sql, nil) // $ querystring=sql
26+
c.DoGetAll(nil, nil, sql, nil) // $ querystring=sql
27+
c.DoQuery(nil, nil, sql, nil) // $ querystring=sql
28+
c.DoPrepare(nil, nil, sql) // $ querystring=sql
3129
}
3230

33-
func gogfDbtest(sql string, c gdb.DB, ctx context.Context) {
31+
func gogfDbtest(sql string, c gdb.DB) {
3432
c.Exec(sql, nil) // $ querystring=sql
3533
c.GetAll(sql, nil) // $ querystring=sql
3634
c.GetArray(sql, nil) // $ querystring=sql
@@ -41,14 +39,14 @@ func gogfDbtest(sql string, c gdb.DB, ctx context.Context) {
4139
c.Query(sql, nil) // $ querystring=sql
4240
c.Raw(sql, nil) // $ querystring=sql
4341
c.GetScan(nil, sql, nil) // $ querystring=sql
44-
c.DoCommit(ctx, nil, sql, nil) // $ querystring=sql
45-
c.DoExec(ctx, nil, sql, nil) // $ querystring=sql
46-
c.DoGetAll(ctx, nil, sql, nil) // $ querystring=sql
47-
c.DoQuery(ctx, nil, sql, nil) // $ querystring=sql
48-
c.DoPrepare(ctx, nil, sql) // $ querystring=sql
42+
c.DoCommit(nil, nil, sql, nil) // $ querystring=sql
43+
c.DoExec(nil, nil, sql, nil) // $ querystring=sql
44+
c.DoGetAll(nil, nil, sql, nil) // $ querystring=sql
45+
c.DoQuery(nil, nil, sql, nil) // $ querystring=sql
46+
c.DoPrepare(nil, nil, sql) // $ querystring=sql
4947
}
5048

51-
func gogfGTest(sql string, ctx context.Context) {
49+
func gogfGTest(sql string) {
5250
c := g.DB("ad")
5351
c.Exec(sql, nil) // $ querystring=sql
5452
c.GetAll(sql, nil) // $ querystring=sql
@@ -60,11 +58,11 @@ func gogfGTest(sql string, ctx context.Context) {
6058
c.Query(sql, nil) // $ querystring=sql
6159
c.Raw(sql, nil) // $ querystring=sql
6260
c.GetScan(nil, sql, nil) // $ querystring=sql
63-
c.DoCommit(ctx, nil, sql, nil) // $ querystring=sql
64-
c.DoExec(ctx, nil, sql, nil) // $ querystring=sql
65-
c.DoGetAll(ctx, nil, sql, nil) // $ querystring=sql
66-
c.DoQuery(ctx, nil, sql, nil) // $ querystring=sql
67-
c.DoPrepare(ctx, nil, sql) // $ querystring=sql
61+
c.DoCommit(nil, nil, sql, nil) // $ querystring=sql
62+
c.DoExec(nil, nil, sql, nil) // $ querystring=sql
63+
c.DoGetAll(nil, nil, sql, nil) // $ querystring=sql
64+
c.DoQuery(nil, nil, sql, nil) // $ querystring=sql
65+
c.DoPrepare(nil, nil, sql) // $ querystring=sql
6866
}
6967

7068
func main() {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import go
2+
3+
from SQL::QueryString qs
4+
select qs

0 commit comments

Comments
 (0)