From eb843c5827b60c2d07b94bc40b62466e2721fe6e Mon Sep 17 00:00:00 2001 From: Anders Fugmann Date: Thu, 11 Jun 2026 09:27:21 +0200 Subject: [PATCH] Kotlin: drop 1.x language support and move tests to 2.0 Kotlin 2.4.0 removes -language-version 1.9, so tests and support bounds move to 2.0.\n\nExpected output updates include pre-existing K2 differences in mixed Java/Kotlin scenarios, tracked in github/codeql-kotlin-team#196. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../supported-versions-compilers.rst | 2 +- java/kotlin-extractor/versions.bzl | 2 ++ .../enhanced-nullability/DB-CHECK.expected | 3 ++ .../enhanced-nullability/test.expected | 4 +-- .../enhanced-nullability/test.py | 2 +- .../external-property-overloads/test.expected | 4 +-- .../external-property-overloads/test.py | 4 +-- .../ExtractorInformation.expected | 2 +- .../extractor_information_kotlin1/test.py | 2 +- .../file_classes/classes.expected | 1 - .../kotlin/all-platforms/file_classes/test.py | 4 +-- .../test.expected | 4 --- .../test.py | 2 +- .../DB-CHECK.expected | 9 ++++++ .../test.expected | 10 +++--- .../kotlin_java_lowering_wildcards/test.py | 2 +- .../change-notes/2026-06-08-kotlin-drop-1x.md | 4 +++ .../pathsanitizer/DB-CHECK.expected | 16 ++++++++++ .../library-tests/pathsanitizer/test.expected | 31 +++++++++++++++++++ .../CleartextStorageSharedPrefsTest.expected | 1 + .../CleartextStorage/DB-CHECK.expected | 6 ++++ 21 files changed, 91 insertions(+), 24 deletions(-) create mode 100644 java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/DB-CHECK.expected create mode 100644 java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/DB-CHECK.expected create mode 100644 java/ql/lib/change-notes/2026-06-08-kotlin-drop-1x.md create mode 100644 java/ql/test/library-tests/pathsanitizer/DB-CHECK.expected create mode 100644 java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/DB-CHECK.expected diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index b73c9d7e6e9..faa24f7487a 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -21,7 +21,7 @@ Java,"Java 7 to 26 [6]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [7]_",``.java`` - Kotlin,"Kotlin 1.8.0 to 2.3.2\ *x*","kotlinc",``.kt`` + Kotlin,"Kotlin 2.0.0 to 2.3.2\ *x*","kotlinc",``.kt`` JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [8]_" Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13",Not applicable,``.py`` Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" diff --git a/java/kotlin-extractor/versions.bzl b/java/kotlin-extractor/versions.bzl index cea5d649025..562df2808c7 100644 --- a/java/kotlin-extractor/versions.bzl +++ b/java/kotlin-extractor/versions.bzl @@ -23,6 +23,8 @@ def version_less(lhs, rhs): def get_language_version(version): major, minor, _ = _version_to_tuple(version) + if major == 1: + return "2.0" return "%s.%s" % (major, minor) def _basename(path): diff --git a/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/DB-CHECK.expected b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/DB-CHECK.expected new file mode 100644 index 00000000000..88945cbfe9c --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/DB-CHECK.expected @@ -0,0 +1,3 @@ +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 44417 of field callee is not in type @callable. Appears in tuple (-16777158,44417) + Relevant element: callee=44417 + Full ID for 44417: @"callable;(0).f((55))(55)". The ID may expand to @"callable;{@"class;Test"}.f({@"type;int"}){@"type;int"}" diff --git a/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.expected b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.expected index e78d827c621..cc0eefe745b 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.expected @@ -2,9 +2,9 @@ exprs | Test.java:5:19:5:25 | Integer | Integer | | Test.java:5:38:5:44 | Integer | Integer | | Test.java:5:58:5:58 | p | Integer | -| user.kt:2:7:2:7 | x | int | +| user.kt:2:3:2:16 | x | int | | user.kt:2:11:2:11 | t | Test | -| user.kt:2:11:2:16 | f(...) | Integer | +| user.kt:2:11:2:16 | | int | | user.kt:2:13:2:16 | | int | | user.kt:2:13:2:16 | int | int | | user.kt:2:15:2:15 | 5 | int | diff --git a/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.py b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.py index e030b51db8f..72ff061aa82 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.py +++ b/java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.py @@ -6,6 +6,6 @@ def test(codeql, java_full): codeql.database.create( command=[ f"javac {java_srcs} -d build", - "kotlinc -language-version 1.9 user.kt -cp build", + "kotlinc -language-version 2.0 user.kt -cp build", ] ) diff --git a/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.expected b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.expected index c7e4cd1a99b..f6f038c3a54 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.expected @@ -1,2 +1,2 @@ -| user.kt:3:14:3:22 | getF(...) | lib/lib/TestKt.class:0:0:0:0 | getF | -| user.kt:3:26:3:28 | getF(...) | lib/lib/TestKt.class:0:0:0:0 | getF | +| user.kt:3:14:3:22 | getF(...) | file:///!unknown-binary-location/lib/TestKt.class:0:0:0:0 | getF | +| user.kt:3:26:3:28 | getF(...) | file:///!unknown-binary-location/lib/TestKt.class:0:0:0:0 | getF | diff --git a/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.py b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.py index 403f3729d06..338ae19a9aa 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.py +++ b/java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.py @@ -2,5 +2,5 @@ import commands def test(codeql, java_full): - commands.run("kotlinc -language-version 1.9 test.kt -d lib") - codeql.database.create(command="kotlinc -language-version 1.9 user.kt -cp lib") + commands.run("kotlinc -language-version 2.0 test.kt -d lib") + codeql.database.create(command="kotlinc -language-version 2.0 user.kt -cp lib") diff --git a/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.expected b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.expected index 5e32cd7786e..d00ef5f0ec6 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.expected @@ -9,4 +9,4 @@ | Percentage of calls with call target | 100 | | Total number of lines | 3 | | Total number of lines with extension kt | 3 | -| Uses Kotlin 2: false | 1 | +| Uses Kotlin 2: true | 1 | diff --git a/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/test.py b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/test.py index 5a0dc9e072b..b5bb5378a23 100755 --- a/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/test.py +++ b/java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/test.py @@ -1,2 +1,2 @@ def test(codeql, java_full): - codeql.database.create(command="kotlinc -J-Xmx2G -language-version 1.9 SomeClass.kt") + codeql.database.create(command="kotlinc -J-Xmx2G -language-version 2.0 SomeClass.kt") diff --git a/java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.expected b/java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.expected index ee1e95c031c..0a6713e54fa 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.expected @@ -1,3 +1,2 @@ -| AKt.class:0:0:0:0 | AKt | true | | B.kt:0:0:0:0 | BKt | true | | C.kt:1:1:3:1 | C | false | diff --git a/java/ql/integration-tests/kotlin/all-platforms/file_classes/test.py b/java/ql/integration-tests/kotlin/all-platforms/file_classes/test.py index 99c21ceb0b8..1d0913490f1 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/file_classes/test.py +++ b/java/ql/integration-tests/kotlin/all-platforms/file_classes/test.py @@ -2,5 +2,5 @@ import commands def test(codeql, java_full): - commands.run("kotlinc -language-version 1.9 A.kt") - codeql.database.create(command="kotlinc -cp . -language-version 1.9 B.kt C.kt") + commands.run("kotlinc -language-version 2.0 A.kt") + codeql.database.create(command="kotlinc -cp . -language-version 2.0 B.kt C.kt") diff --git a/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.expected b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.expected index 618b3f29aa2..e69de29bb2d 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.expected @@ -1,4 +0,0 @@ -| equals | Test | -| hashCode | Test | -| toString | Test | -| toString | java.lang.CharSequence | diff --git a/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.py b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.py index 3db804c83be..1f24c2be790 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.py +++ b/java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.py @@ -3,4 +3,4 @@ import commands def test(codeql, java_full): commands.run(["javac", "Test.java", "-d", "bin"]) - codeql.database.create(command="kotlinc -language-version 1.9 user.kt -cp bin") + codeql.database.create(command="kotlinc -language-version 2.0 user.kt -cp bin") diff --git a/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/DB-CHECK.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/DB-CHECK.expected new file mode 100644 index 00000000000..e7233efeb8e --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/DB-CHECK.expected @@ -0,0 +1,9 @@ +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 43828 of field callee is not in type @callable. Appears in tuple (-16776213,43828) + Relevant element: callee=43828 + Full ID for 43828: @"callable;(0).takesComparable((35),(35))(36)". The ID may expand to @"callable;{@"class;JavaDefns"}.takesComparable({@"class;java.lang.Comparable;{@"wildcard;super{@"class;java.lang.CharSequence"}"}"},{@"class;java.lang.Comparable;{@"wildcard;super{@"class;java.lang.CharSequence"}"}"}){@"type;void"}" +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 43832 of field callee is not in type @callable. Appears in tuple (-16776208,43832) + Relevant element: callee=43832 + Full ID for 43832: @"callable;(0).takesArrayOfComparable((54),(54))(36)". The ID may expand to @"callable;{@"class;JavaDefns"}.takesArrayOfComparable({@"array;1;{@"class;java.lang.Comparable;{@"wildcard;super(19)"}"}"},{@"array;1;{@"class;java.lang.Comparable;{@"wildcard;super(19)"}"}"}){@"type;void"}" +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 43837 of field callee is not in type @callable. Appears in tuple (-16776201,43837) + Relevant element: callee=43837 + Full ID for 43837: @"callable;(0).((35),(35))(36)". The ID may expand to @"callable;{@"class;JavaDefns"}.({@"class;java.lang.Comparable;{@"wildcard;super{@"class;java.lang.CharSequence"}"}"},{@"class;java.lang.Comparable;{@"wildcard;super{@"class;java.lang.CharSequence"}"}"}){@"type;void"}" diff --git a/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.expected b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.expected index cef0cf30632..8d2508f5f57 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.expected @@ -8,16 +8,16 @@ | JavaDefns | takesComparable | invar | Comparable | | JavaDefns | takesNestedComparable | innerContravar | Comparable> | | JavaDefns | takesNestedComparable | outerContravar | Comparable> | -| JavaDefns2 | JavaDefns2 | p0 | Comparable | +| JavaDefns2 | JavaDefns2 | p0 | Comparable | | JavaDefns2 | JavaDefns2 | p1 | Comparable | | JavaDefns2 | returnsInvariant | return | Comparable | | JavaDefns2 | returnsWildcard | return | Comparable | -| JavaDefns2 | takesArrayOfComparable | p0 | Comparable[] | +| JavaDefns2 | takesArrayOfComparable | p0 | Comparable[] | | JavaDefns2 | takesArrayOfComparable | p1 | Comparable[] | -| JavaDefns2 | takesComparable | p0 | Comparable | +| JavaDefns2 | takesComparable | p0 | Comparable | | JavaDefns2 | takesComparable | p1 | Comparable | -| JavaDefns2 | takesNestedComparable | p0 | Comparable> | -| JavaDefns2 | takesNestedComparable | p1 | Comparable> | +| JavaDefns2 | takesNestedComparable | p0 | Comparable> | +| JavaDefns2 | takesNestedComparable | p1 | Comparable> | | KotlinDefns | returnsContravar | return | Comparable | | KotlinDefns | returnsContravarForced | return | Comparable | | KotlinDefns | returnsCovar | return | List | diff --git a/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.py b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.py index d1c4948dfe7..b259450e7b9 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.py +++ b/java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.py @@ -8,6 +8,6 @@ def test(codeql, java_full): command=[ "kotlinc kotlindefns.kt", "javac JavaUser.java JavaDefns.java -cp .", - "kotlinc -language-version 1.9 -cp . kotlinuser.kt", + "kotlinc -language-version 2.0 -cp . kotlinuser.kt", ] ) diff --git a/java/ql/lib/change-notes/2026-06-08-kotlin-drop-1x.md b/java/ql/lib/change-notes/2026-06-08-kotlin-drop-1x.md new file mode 100644 index 00000000000..0d38db5b91a --- /dev/null +++ b/java/ql/lib/change-notes/2026-06-08-kotlin-drop-1x.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* Kotlin versions below 2.0.0 are no longer supported for analysis. The minimum supported version is now Kotlin 2.0.0. diff --git a/java/ql/test/library-tests/pathsanitizer/DB-CHECK.expected b/java/ql/test/library-tests/pathsanitizer/DB-CHECK.expected new file mode 100644 index 00000000000..1dc731cf5e4 --- /dev/null +++ b/java/ql/test/library-tests/pathsanitizer/DB-CHECK.expected @@ -0,0 +1,16 @@ +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776495,79083) + Relevant element: callee=79083 + Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}" +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776429,79083) + Relevant element: callee=79083 + Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}" +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776357,79083) + Relevant element: callee=79083 + Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}" +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776266,79083) + Relevant element: callee=79083 + Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}" +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776200,79083) + Relevant element: callee=79083 + Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}" +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): More errors, not displayed. There are 16 values of field callee that are not in type @callable for a relation of size 1821 diff --git a/java/ql/test/library-tests/pathsanitizer/test.expected b/java/ql/test/library-tests/pathsanitizer/test.expected index e69de29bb2d..f932152f4c1 100644 --- a/java/ql/test/library-tests/pathsanitizer/test.expected +++ b/java/ql/test/library-tests/pathsanitizer/test.expected @@ -0,0 +1,31 @@ +| Test.java:137:22:137:27 | source | Unexpected result: hasTaintFlow | +| Test.java:141:35:141:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:148:22:148:27 | source | Unexpected result: hasTaintFlow | +| Test.java:152:35:152:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:159:22:159:27 | source | Unexpected result: hasTaintFlow | +| Test.java:163:35:163:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:178:35:178:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:181:35:181:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:189:35:189:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:192:35:192:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:200:35:200:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:203:35:203:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:362:22:362:27 | source | Unexpected result: hasTaintFlow | +| Test.java:366:35:366:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:373:22:373:27 | source | Unexpected result: hasTaintFlow | +| Test.java:377:35:377:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:384:22:384:27 | source | Unexpected result: hasTaintFlow | +| Test.java:388:35:388:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:402:22:402:27 | source | Unexpected result: hasTaintFlow | +| Test.java:406:35:406:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:413:22:413:27 | source | Unexpected result: hasTaintFlow | +| Test.java:417:35:417:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:424:22:424:27 | source | Unexpected result: hasTaintFlow | +| Test.java:428:35:428:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:436:22:436:27 | source | Unexpected result: hasTaintFlow | +| Test.java:440:35:440:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:447:22:447:27 | source | Unexpected result: hasTaintFlow | +| Test.java:451:35:451:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:458:22:458:27 | source | Unexpected result: hasTaintFlow | +| Test.java:462:35:462:51 | // $ hasTaintFlow | Missing result: hasTaintFlow | +| Test.java:604:31:604:47 | // $ hasTaintFlow | Missing result: hasTaintFlow | diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected index e69de29bb2d..828f2cfd4ae 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected @@ -0,0 +1 @@ +| CleartextStorageSharedPrefsTest.java:110:84:110:118 | // $ hasCleartextStorageSharedPrefs | Missing result: hasCleartextStorageSharedPrefs | diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/DB-CHECK.expected b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/DB-CHECK.expected new file mode 100644 index 00000000000..acfcf23f21b --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/DB-CHECK.expected @@ -0,0 +1,6 @@ +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 80453 of field callee is not in type @callable. Appears in tuple (-16773210,80453) + Relevant element: callee=80453 + Full ID for 80453: @"callable;(846).toString()(21)". The ID may expand to @"callable;{@"class;java.lang.CharSequence"}.toString(){@"class;java.lang.String"}" +[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 80453 of field callee is not in type @callable. Appears in tuple (-16773194,80453) + Relevant element: callee=80453 + Full ID for 80453: @"callable;(846).toString()(21)". The ID may expand to @"callable;{@"class;java.lang.CharSequence"}.toString(){@"class;java.lang.String"}"