Skip to content
This repository was archived by the owner on Jan 5, 2023. It is now read-only.

Commit 4e2ec44

Browse files
authored
Merge pull request #682 from lyoung-confluent/patch-1
Add Column, From, JoinClause, *Join, Having, OrderByClause methods for squirrel SQLi query
2 parents 415c3d1 + 576c26c commit 4e2ec44

7 files changed

Lines changed: 134 additions & 9 deletions

File tree

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,14 @@ module SQL {
9292
// first argument to `squirrel.Expr`
9393
fn.hasQualifiedName(sq, "Expr")
9494
or
95-
// first argument to the `Prefix`, `Suffix` or `Where` method of one of the `*Builder` classes
95+
// first argument `pred`, `sql`, `from` to most methods of one of the `*Builder` classes
9696
exists(string builder | builder.matches("%Builder") |
97-
fn.(Method).hasQualifiedName(sq, builder, "Prefix") or
98-
fn.(Method).hasQualifiedName(sq, builder, "Suffix") or
99-
fn.(Method).hasQualifiedName(sq, builder, "Where")
97+
fn.(Method)
98+
.hasQualifiedName(sq, builder,
99+
[
100+
"Prefix", "Column", "From", "JoinClause", "Join", "LeftJoin", "RightJoin",
101+
"InnerJoin", "CrossJoin", "Where", "Having", "OrderByClause", "Suffix"
102+
])
100103
)
101104
) and
102105
this = fn.getACall().getArgument(0) and

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module semmle.go.frameworks.SQL
33
go 1.13
44

55
require (
6-
github.com/Masterminds/squirrel v1.1.0
6+
github.com/Masterminds/squirrel v1.5.2
77
github.com/go-pg/pg v8.0.6+incompatible
88
github.com/go-pg/pg/v9 v9.1.3
99
github.com/go-sql-driver/mysql v1.6.0 // indirect

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,18 @@ func test(db *sql.DB, ctx context.Context) {
4343
}
4444

4545
func squirrelTest(querypart string) {
46+
squirrel.Select("*").From("users").Prefix(querypart) // $ querystring=querypart
47+
squirrel.Select("*").From("users").Column(querypart) // $ querystring=querypart
48+
squirrel.Select("*").From("users").From(querypart) // $ querystring=querypart
49+
squirrel.Select("*").From("users").JoinClause(querypart) // $ querystring=querypart
50+
squirrel.Select("*").From("users").Join(querypart) // $ querystring=querypart
51+
squirrel.Select("*").From("users").LeftJoin(querypart) // $ querystring=querypart
52+
squirrel.Select("*").From("users").RightJoin(querypart) // $ querystring=querypart
53+
squirrel.Select("*").From("users").InnerJoin(querypart) // $ querystring=querypart
4654
squirrel.Select("*").From("users").Where(squirrel.Expr(querypart)) // $ querystring=querypart
4755
squirrel.Select("*").From("users").Where(querypart) // $ querystring=querypart
56+
squirrel.Select("*").From("users").Having(querypart) // $ querystring=querypart
57+
squirrel.Select("*").From("users").OrderByClause(querypart) // $ querystring=querypart
4858
squirrel.Select("*").From("users").Suffix(querypart) // $ querystring=querypart
4959
}
5060

ql/test/library-tests/semmle/go/frameworks/SQL/vendor/github.com/Masterminds/squirrel/stub.go

Lines changed: 29 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ql/test/query-tests/Security/CWE-089/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ module Security.CWE-089
33
go 1.14
44

55
require (
6-
github.com/Masterminds/squirrel v1.1.0
6+
github.com/Masterminds/squirrel v1.5.2
77
go.mongodb.org/mongo-driver v1.3.3
88
)

ql/test/query-tests/Security/CWE-089/vendor/github.com/Masterminds/squirrel/stub.go

Lines changed: 85 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ql/test/query-tests/Security/CWE-089/vendor/modules.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# github.com/Masterminds/squirrel v1.1.0
1+
# github.com/Masterminds/squirrel v1.5.2
22
## explicit
33
github.com/Masterminds/squirrel
44
# go.mongodb.org/mongo-driver v1.3.3

0 commit comments

Comments
 (0)