Kotlin: Escape TRAP strings

This commit is contained in:
Ian Lynagh
2021-08-16 10:45:46 +01:00
parent f85cf27df8
commit bbb9d013e0
4 changed files with 13 additions and 9 deletions

View File

@@ -57,7 +57,7 @@ def genTable(kt, relname, body, enum = None, kind = None, num = None, typ = None
if colname == kind:
kt.write(str(num))
elif db_type == 'string' or db_type == 'date':
kt.write('\\"$' + colname + '\\"') # TODO: Escaping
kt.write('\\"${escapeTrapString(' + colname + ')}\\"')
else:
# TODO: Any reformatting or escaping necessary?
# e.g. float formats?
@@ -70,11 +70,6 @@ with open('src/main/kotlin/KotlinExtractorDbScheme.kt', 'w') as kt:
kt.write('/* Generated by ' + sys.argv[0] + ': Do not edit manually. */\n')
kt.write('package com.github.codeql\n')
kt.write('class Label<T>(val name: Int) {\n')
kt.write(' override fun toString(): String = "#$name"\n')
kt.write('}\n')
# kind enums
for name, kind, body in re.findall(r'case\s+@([^.\s]*)\.([^.\s]*)\s+of\b(.*?);',
dbscheme,

View File

@@ -51,6 +51,12 @@ class KotlinExtractorExtension(private val tests: List<String>) : IrGenerationEx
}
}
class Label<T>(val name: Int) {
override fun toString(): String = "#$name"
}
fun escapeTrapString(str: String) = str.replace("\"", "\"\"")
class Logger() {
private val warningCounts = mutableMapOf<String, Int>()
private val warningLimit: Int

View File

@@ -34,9 +34,10 @@
| exprs.kt:24:14:24:18 | false |
| exprs.kt:28:13:28:15 | x |
| exprs.kt:29:16:29:25 | string lit |
| exprs.kt:33:12:33:14 | 123 |
| exprs.kt:33:12:33:20 | ... + ... |
| exprs.kt:33:18:33:20 | 456 |
| exprs.kt:30:25:30:37 | string " lit |
| exprs.kt:34:12:34:14 | 123 |
| exprs.kt:34:12:34:20 | ... + ... |
| exprs.kt:34:18:34:20 | 456 |
| file://:0:0:0:0 | b1 |
| file://:0:0:0:0 | b2 |
| file://:0:0:0:0 | b3 |
@@ -67,3 +68,4 @@
| file://:0:0:0:0 | i20 |
| file://:0:0:0:0 | i21 |
| file://:0:0:0:0 | str |
| file://:0:0:0:0 | strWithQuote |

View File

@@ -27,6 +27,7 @@ fun topLevelMethod(x: Int, y: Int): Int {
val b5 = !b1
val c = 'x'
val str = "string lit"
val strWithQuote = "string \" lit"
val b6 = i1 is Int
val b7 = i1 !is Int
val b8 = b7 as Boolean