Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bbb9d01

Browse files
committed
Kotlin: Escape TRAP strings
1 parent f85cf27 commit bbb9d01

4 files changed

Lines changed: 13 additions & 9 deletions

File tree

java/kotlin-extractor/generate_dbscheme.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def genTable(kt, relname, body, enum = None, kind = None, num = None, typ = None
5757
if colname == kind:
5858
kt.write(str(num))
5959
elif db_type == 'string' or db_type == 'date':
60-
kt.write('\\"$' + colname + '\\"') # TODO: Escaping
60+
kt.write('\\"${escapeTrapString(' + colname + ')}\\"')
6161
else:
6262
# TODO: Any reformatting or escaping necessary?
6363
# e.g. float formats?
@@ -70,11 +70,6 @@ def genTable(kt, relname, body, enum = None, kind = None, num = None, typ = None
7070
kt.write('/* Generated by ' + sys.argv[0] + ': Do not edit manually. */\n')
7171
kt.write('package com.github.codeql\n')
7272

73-
kt.write('class Label<T>(val name: Int) {\n')
74-
kt.write(' override fun toString(): String = "#$name"\n')
75-
kt.write('}\n')
76-
77-
7873
# kind enums
7974
for name, kind, body in re.findall(r'case\s+@([^.\s]*)\.([^.\s]*)\s+of\b(.*?);',
8075
dbscheme,

java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ class KotlinExtractorExtension(private val tests: List<String>) : IrGenerationEx
5151
}
5252
}
5353

54+
class Label<T>(val name: Int) {
55+
override fun toString(): String = "#$name"
56+
}
57+
58+
fun escapeTrapString(str: String) = str.replace("\"", "\"\"")
59+
5460
class Logger() {
5561
private val warningCounts = mutableMapOf<String, Int>()
5662
private val warningLimit: Int

java/ql/test/kotlin/library-tests/exprs/exprs.expected

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@
3434
| exprs.kt:24:14:24:18 | false |
3535
| exprs.kt:28:13:28:15 | x |
3636
| exprs.kt:29:16:29:25 | string lit |
37-
| exprs.kt:33:12:33:14 | 123 |
38-
| exprs.kt:33:12:33:20 | ... + ... |
39-
| exprs.kt:33:18:33:20 | 456 |
37+
| exprs.kt:30:25:30:37 | string " lit |
38+
| exprs.kt:34:12:34:14 | 123 |
39+
| exprs.kt:34:12:34:20 | ... + ... |
40+
| exprs.kt:34:18:34:20 | 456 |
4041
| file://:0:0:0:0 | b1 |
4142
| file://:0:0:0:0 | b2 |
4243
| file://:0:0:0:0 | b3 |
@@ -67,3 +68,4 @@
6768
| file://:0:0:0:0 | i20 |
6869
| file://:0:0:0:0 | i21 |
6970
| file://:0:0:0:0 | str |
71+
| file://:0:0:0:0 | strWithQuote |

java/ql/test/kotlin/library-tests/exprs/exprs.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ fun topLevelMethod(x: Int, y: Int): Int {
2727
val b5 = !b1
2828
val c = 'x'
2929
val str = "string lit"
30+
val strWithQuote = "string \" lit"
3031
val b6 = i1 is Int
3132
val b7 = i1 !is Int
3233
val b8 = b7 as Boolean

0 commit comments

Comments
 (0)