diff --git a/go/ql/test/library-tests/semmle/go/Types/variadicFunctions.go b/go/ql/test/library-tests/semmle/go/Types/variadicFunctions.go
index 427adeb90417..4cedb679b045 100644
--- a/go/ql/test/library-tests/semmle/go/Types/variadicFunctions.go
+++ b/go/ql/test/library-tests/semmle/go/Types/variadicFunctions.go
@@ -7,7 +7,7 @@ func testing() {
nonvariadicDeclaredFunction([]int{})
}
-func variadicDeclaredFunction(x ...int) int { // $ isVariadic
+func variadicDeclaredFunction(x ...int) int {
a := make([]int, 0, 10)
y := append(x, a...)
print(x[0], x[1])
@@ -15,7 +15,7 @@ func variadicDeclaredFunction(x ...int) int { // $ isVariadic
fmt.Fprint(nil, nil, nil)
variadicFunctionLiteral := func(z ...int) int { return z[1] } // $ isVariadic
return variadicFunctionLiteral(y...)
-}
+} // $ isVariadic
func nonvariadicDeclaredFunction(x []int) int {
return 0
diff --git a/go/ql/test/library-tests/semmle/go/concepts/HTTP/main.go b/go/ql/test/library-tests/semmle/go/concepts/HTTP/main.go
index 12a3929cec67..5bd6dbf185ed 100644
--- a/go/ql/test/library-tests/semmle/go/concepts/HTTP/main.go
+++ b/go/ql/test/library-tests/semmle/go/concepts/HTTP/main.go
@@ -59,7 +59,7 @@ func main() {
http.HandleFunc("/foo", handler) // $ handler="/foo"
- http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) { // $ handler="/bar"
+ http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
- })
+ }) // $ handler="/bar"
}
diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTest.java b/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTest.java
index 0c0e386e9c27..35a118f8048d 100644
--- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTest.java
+++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTest.java
@@ -145,7 +145,7 @@ void test() throws Exception {
// Test all fluent methods are passing taint through to their result:
StrBuilder fluentAllMethodsTest = new StrBuilder(taint());
- sink(fluentAllMethodsTest // $hasTaintFlow
+ sink(fluentAllMethodsTest
.append("text")
.appendAll("text")
.appendFixedWidthPadLeft("text", 4, ' ')
@@ -171,7 +171,7 @@ void test() throws Exception {
.setLength(500)
.setNewLineText("newline")
.setNullText("NULL")
- .trim());
+ .trim()); // $hasTaintFlow
// Test all fluent methods are passing taint back to their qualifier:
StrBuilder fluentAllMethodsTest2 = new StrBuilder();
diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTextTest.java b/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTextTest.java
index 74f0f1d17c98..431716470043 100644
--- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTextTest.java
+++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTextTest.java
@@ -145,7 +145,7 @@ void test() throws Exception {
// Test all fluent methods are passing taint through to their result:
StrBuilder fluentAllMethodsTest = new StrBuilder(taint());
- sink(fluentAllMethodsTest // $hasTaintFlow
+ sink(fluentAllMethodsTest
.append("text")
.appendAll("text")
.appendFixedWidthPadLeft("text", 4, ' ')
@@ -171,7 +171,7 @@ void test() throws Exception {
.setLength(500)
.setNewLineText("newline")
.setNullText("NULL")
- .trim());
+ .trim()); // $hasTaintFlow
// Test all fluent methods are passing taint back to their qualifier:
StrBuilder fluentAllMethodsTest2 = new StrBuilder();
diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/TextStringBuilderTest.java b/java/ql/test/library-tests/frameworks/apache-commons-lang3/TextStringBuilderTest.java
index e490c11c7cb3..41941cca223b 100644
--- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/TextStringBuilderTest.java
+++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/TextStringBuilderTest.java
@@ -146,7 +146,7 @@ void test() throws Exception {
// Test all fluent methods are passing taint through to their result:
TextStringBuilder fluentAllMethodsTest = new TextStringBuilder(taint());
- sink(fluentAllMethodsTest // $hasTaintFlow
+ sink(fluentAllMethodsTest
.append("text")
.appendAll("text")
.appendFixedWidthPadLeft("text", 4, ' ')
@@ -172,7 +172,7 @@ void test() throws Exception {
.setLength(500)
.setNewLineText("newline")
.setNullText("NULL")
- .trim());
+ .trim()); // $hasTaintFlow
// Test all fluent methods are passing taint back to their qualifier:
TextStringBuilder fluentAllMethodsTest2 = new TextStringBuilder();
diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/JsfXSS.java b/java/ql/test/query-tests/security/CWE-079/semmle/tests/JsfXSS.java
index 9fd7a1ffcae2..281b89720d2a 100644
--- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/JsfXSS.java
+++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/JsfXSS.java
@@ -24,9 +24,9 @@ public void encodeBegin(FacesContext facesContext, UIComponent component) throws
ResponseWriter writer = facesContext.getResponseWriter();
writer.write("");
diff --git a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/AndroidManifest.xml b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/AndroidManifest.xml
index 78d85ecb7a5d..9a915624e5e3 100644
--- a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/AndroidManifest.xml
+++ b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/AndroidManifest.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.example.happybirthday">
-
+ tools:targetApi="31">
diff --git a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/Testbuild/AndroidManifest.xml b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/Testbuild/AndroidManifest.xml
index 613bc8aeca17..cb8591f3a709 100644
--- a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/Testbuild/AndroidManifest.xml
+++ b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/Testbuild/AndroidManifest.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.example.happybirthday">
-
+ tools:targetApi="31">
diff --git a/java/ql/test/query-tests/security/CWE-524/res/layout/Test.xml b/java/ql/test/query-tests/security/CWE-524/res/layout/Test.xml
index 107c13dd3068..3446d5307945 100644
--- a/java/ql/test/query-tests/security/CWE-524/res/layout/Test.xml
+++ b/java/ql/test/query-tests/security/CWE-524/res/layout/Test.xml
@@ -4,9 +4,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
-
+ android:inputType="text"/>
-
+ android:inputType="textMultiLine"/>
-
+
diff --git a/java/ql/test/query-tests/security/CWE-926/AndroidManifest.xml b/java/ql/test/query-tests/security/CWE-926/AndroidManifest.xml
index 210c97b26a24..c759d38e7dd8 100644
--- a/java/ql/test/query-tests/security/CWE-926/AndroidManifest.xml
+++ b/java/ql/test/query-tests/security/CWE-926/AndroidManifest.xml
@@ -14,58 +14,58 @@
android:theme="@style/Theme.HappyBirthday"
tools:targetApi="31">
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
@@ -73,41 +73,41 @@
-
+
-
-
+
-
-
+
-
-
+
-
-
+
diff --git a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/AndroidManifest.xml b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/AndroidManifest.xml
index 928dc72a665d..ba2bbbb006b5 100644
--- a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/AndroidManifest.xml
+++ b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/AndroidManifest.xml
@@ -17,22 +17,22 @@
-
+ android:readPermission="android.permission.MANAGE_DOCUMENTS">
-
+ android:writePermission="android.permission.MANAGE_DOCUMENTS">
diff --git a/python/ql/test/library-tests/frameworks/django-v2-v3/testproj/settings.py b/python/ql/test/library-tests/frameworks/django-v2-v3/testproj/settings.py
index f376ae752d86..d88ce4c05e39 100644
--- a/python/ql/test/library-tests/frameworks/django-v2-v3/testproj/settings.py
+++ b/python/ql/test/library-tests/frameworks/django-v2-v3/testproj/settings.py
@@ -40,7 +40,7 @@
'django.contrib.staticfiles',
]
-MIDDLEWARE = [ # $CsrfProtectionSetting=false
+MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
@@ -48,7 +48,7 @@
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
-]
+] # $CsrfProtectionSetting=false
ROOT_URLCONF = 'testproj.urls'
diff --git a/python/ql/test/library-tests/frameworks/flask/old_test.py b/python/ql/test/library-tests/frameworks/flask/old_test.py
index d86c75019e52..556467fad9bd 100644
--- a/python/ql/test/library-tests/frameworks/flask/old_test.py
+++ b/python/ql/test/library-tests/frameworks/flask/old_test.py
@@ -21,8 +21,8 @@ def get(self, user_id): # $ requestHandler
the_view = MyView.as_view('my_view')
-app.add_url_rule('/the/', defaults={'user_id': None}, # $routeSetup="/the/"
- view_func=the_view, methods=['GET',])
+app.add_url_rule('/the/', defaults={'user_id': None},
+ view_func=the_view, methods=['GET',]) # $routeSetup="/the/"
@app.route("/dangerous") # $routeSetup="/dangerous"
def dangerous(): # $requestHandler
diff --git a/ruby/ql/test/library-tests/dataflow/api-graphs/callbacks.rb b/ruby/ql/test/library-tests/dataflow/api-graphs/callbacks.rb
index 41383b7a2127..34c4d17d212a 100644
--- a/ruby/ql/test/library-tests/dataflow/api-graphs/callbacks.rb
+++ b/ruby/ql/test/library-tests/dataflow/api-graphs/callbacks.rb
@@ -1,30 +1,30 @@
-Something.foo.withCallback do |a, b| #$ use=getMember("Something").getMethod("foo").getReturn().getMethod("withCallback").getReturn()
+Something.foo.withCallback do |a, b| #$ use=getMember("Something").getMethod("foo").getReturn()
a.something #$ use=getMember("Something").getMethod("foo").getReturn().getMethod("withCallback").getBlock().getParameter(0).getMethod("something").getReturn()
b.somethingElse #$ use=getMember("Something").getMethod("foo").getReturn().getMethod("withCallback").getBlock().getParameter(1).getMethod("somethingElse").getReturn()
-end
+end #$ use=getMember("Something").getMethod("foo").getReturn().getMethod("withCallback").getReturn()
-Something.withNamedArg do |a:, b: nil| #$ use=getMember("Something").getMethod("withNamedArg").getReturn()
+Something.withNamedArg do |a:, b: nil| #$ use=getMember("Something")
a.something #$ use=getMember("Something").getMethod("withNamedArg").getBlock().getKeywordParameter("a").getMethod("something").getReturn()
b.somethingElse #$ use=getMember("Something").getMethod("withNamedArg").getBlock().getKeywordParameter("b").getMethod("somethingElse").getReturn()
-end
+end #$ use=getMember("Something").getMethod("withNamedArg").getReturn()
-Something.withLambda ->(a, b) { #$ use=getMember("Something").getMethod("withLambda").getReturn()
+Something.withLambda ->(a, b) { #$ use=getMember("Something")
a.something #$ use=getMember("Something").getMethod("withLambda").getParameter(0).getParameter(0).getMethod("something").getReturn()
b.something #$ use=getMember("Something").getMethod("withLambda").getParameter(0).getParameter(1).getMethod("something").getReturn()
-}
+} #$ use=getMember("Something").getMethod("withLambda").getReturn()
-Something.namedCallback( #$ use=getMember("Something").getMethod("namedCallback").getReturn()
+Something.namedCallback( #$ use=getMember("Something")
onEvent: ->(a, b) {
a.something #$ use=getMember("Something").getMethod("namedCallback").getKeywordParameter("onEvent").getParameter(0).getMethod("something").getReturn()
b.something #$ use=getMember("Something").getMethod("namedCallback").getKeywordParameter("onEvent").getParameter(1).getMethod("something").getReturn()
}
-)
+) #$ use=getMember("Something").getMethod("namedCallback").getReturn()
-Something.nestedCall1 do |a| #$ use=getMember("Something").getMethod("nestedCall1").getReturn()
- a.nestedCall2 do |b:| #$ use=getMember("Something").getMethod("nestedCall1").getBlock().getParameter(0).getMethod("nestedCall2").getReturn()
+Something.nestedCall1 do |a| #$ use=getMember("Something")
+ a.nestedCall2 do |b:| #$ use=getMember("Something").getMethod("nestedCall1").getBlock().getParameter(0)
b.something #$ use=getMember("Something").getMethod("nestedCall1").getBlock().getParameter(0).getMethod("nestedCall2").getBlock().getKeywordParameter("b").getMethod("something").getReturn()
- end
-end
+ end #$ use=getMember("Something").getMethod("nestedCall1").getBlock().getParameter(0).getMethod("nestedCall2").getReturn()
+end #$ use=getMember("Something").getMethod("nestedCall1").getReturn()
def getCallback()
->(x) {
@@ -33,7 +33,7 @@ def getCallback()
end
Something.indirectCallback(getCallback()) #$ use=getMember("Something").getMethod("indirectCallback").getReturn()
-Something.withMixed do |a, *args, b| #$ use=getMember("Something").getMethod("withMixed").getReturn()
+Something.withMixed do |a, *args, b| #$ use=getMember("Something")
a.something #$ use=getMember("Something").getMethod("withMixed").getBlock().getParameter(0).getMethod("something").getReturn()
# b.something # not currently handled correctly
-end
+end #$ use=getMember("Something").getMethod("withMixed").getReturn()
diff --git a/ruby/ql/test/library-tests/dataflow/api-graphs/test1.rb b/ruby/ql/test/library-tests/dataflow/api-graphs/test1.rb
index 34e2aa5f9cb3..86b8bce9587b 100644
--- a/ruby/ql/test/library-tests/dataflow/api-graphs/test1.rb
+++ b/ruby/ql/test/library-tests/dataflow/api-graphs/test1.rb
@@ -13,9 +13,9 @@
Foo::Bar::Baz #$ use=getMember("Foo").getMember("Bar").getMember("Baz")
Const = [1, 2, 3] #$ use=getMember("Array").getMethod("[]").getReturn()
-Const.each do |c| #$ use=getMember("Const").getMethod("each").getReturn() def=getMember("Const").getMethod("each").getBlock()
+Const.each do |c| #$ use=getMember("Const")
puts c #$ use=getMember("Const").getMethod("each").getBlock().getParameter(0) use=getMember("Const").getContent(element)
-end
+end #$ use=getMember("Const").getMethod("each").getReturn() def=getMember("Const").getMethod("each").getBlock()
foo = Foo #$ use=getMember("Foo")
foo::Bar::Baz #$ use=getMember("Foo").getMember("Bar").getMember("Baz")
diff --git a/ruby/ql/test/library-tests/dataflow/api-graphs/use.ql b/ruby/ql/test/library-tests/dataflow/api-graphs/use.ql
index 1f2780793ec7..9eb450c01ea9 100644
--- a/ruby/ql/test/library-tests/dataflow/api-graphs/use.ql
+++ b/ruby/ql/test/library-tests/dataflow/api-graphs/use.ql
@@ -44,7 +44,7 @@ class ApiUseTest extends InlineExpectationsTest {
max(API::Node a2, Location l2, DataFlow::Node n2 |
relevantNode(a2, n2, l2, tag) and
l2.getFile() = location.getFile() and
- l2.getStartLine() = location.getStartLine()
+ l2.getEndLine() = location.getEndLine()
|
a2.getPath()
order by
diff --git a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.rb b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.rb
index 090791ddb203..4424893a9b57 100644
--- a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.rb
+++ b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.rb
@@ -44,9 +44,9 @@ def m7(x)
def m8
sink(s8 { source "a" }) # $ hasValueFlow=a
- sink(s8 do # $hasValueFlow=a
+ sink(s8 do
source "a"
- end)
+ end) # $hasValueFlow=a
end
def m9
diff --git a/ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb b/ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb
index 9b3bee6e663f..e1e60209c794 100644
--- a/ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb
+++ b/ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb
@@ -47,54 +47,54 @@ def m6(arg1, arg2)
end
# Bad: method has parameter but only one result is memoized.
-def m7(arg) # $result=BAD
+def m7(arg)
@m7 ||= begin
arg += 3
end
@m7
-end
+end # $result=BAD
# Bad: method has parameter but only one result is memoized.
-def m8(arg) # $result=BAD
+def m8(arg)
@m8 ||= begin
long_running_method(arg)
end
@m8
-end
+end # $result=BAD
# Bad: method has parameter but only one result is memoized.
-def m9(arg) # $result=BAD
+def m9(arg)
@m9 ||= long_running_method(arg)
-end
+end # $result=BAD
# Bad: method has parameter but only one result is memoized.
-def m10(arg1, arg2) # $result=BAD
+def m10(arg1, arg2)
@m10 ||= long_running_method(arg1, arg2)
-end
+end # $result=BAD
# Bad: `arg2` not used in key.
-def m11(arg1, arg2) # $result=BAD
+def m11(arg1, arg2)
@m11 ||= {}
@m11[arg1] ||= long_running_method(arg1, arg2)
-end
+end # $result=BAD
# Bad: `arg2` not used in key.
-def m12(arg1, arg2) # $result=BAD
+def m12(arg1, arg2)
@m12 ||= Hash.new do |h1, arg1|
h1[arg1] = result(arg1, arg2)
end
@m12[arg1]
-end
+end # $result=BAD
# Bad: arg not used in key.
-def m13(id:) # $result=BAD
+def m13(id:)
@m13 ||= Rails.cache.fetch("product_sku/#{id}", expires_in: 30.minutes) do
ActiveRecord::Base.transaction do
ProductSku.find_by(id: id)
end
end
@m13
-end
+end # $result=BAD
# Good (FP): arg is used in key via string interpolation.
def m14(arg)
diff --git a/ruby/ql/test/query-tests/security/cwe-116/IncompleteMultiCharacterSanitization/incomplete_multi_character_sanitization.rb b/ruby/ql/test/query-tests/security/cwe-116/IncompleteMultiCharacterSanitization/incomplete_multi_character_sanitization.rb
index 3301b00e709b..a9c61a29c213 100644
--- a/ruby/ql/test/query-tests/security/cwe-116/IncompleteMultiCharacterSanitization/incomplete_multi_character_sanitization.rb
+++ b/ruby/ql/test/query-tests/security/cwe-116/IncompleteMultiCharacterSanitization/incomplete_multi_character_sanitization.rb
@@ -80,9 +80,9 @@ def m9(x)
x = x.gsub(/^(\.\.\/?)+/, "") # OK
# NOT OK
- x = x.gsub(/