Skip to content

Commit 44c3a41

Browse files
Jami CogswellJami Cogswell
authored andcommitted
Java: resolve more -1 to this conflicts
1 parent d6c071d commit 44c3a41

19 files changed

Lines changed: 120 additions & 17 deletions

java/ql/lib/ext/java.awt.model.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ extensions:
33
pack: codeql/java-all
44
extensible: summaryModel
55
data:
6+
- ["java.awt", "Container", True, "add", "(Component)", "", "Argument[0]", "Argument[-1].Element", "value", "manual"] # ! signature as "" instead?
67
- ["java.awt", "Container", True, "add", "(Component,Object)", "", "Argument[0]", "Argument[-1].Element", "value", "manual"]

java/ql/lib/ext/java.io.model.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ extensions:
7171
- ["java.io", "File", True, "getCanonicalFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
7272
- ["java.io", "File", True, "getCanonicalPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
7373
- ["java.io", "File", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"]
74+
- ["java.io", "File", False, "getPath", "()", "", "Argument[-1]", "ReturnValue", "taint", "manual"] # ! True versus False (maybe it's private/hidden?).. (and neutral instead?)
7475
- ["java.io", "File", True, "toPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
7576
- ["java.io", "File", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
7677
- ["java.io", "File", True, "toURI", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
@@ -91,10 +92,14 @@ extensions:
9192
- ["java.io", "OutputStream", True, "write", "(int)", "", "Argument[0]", "Argument[this]", "taint", "manual"]
9293
- ["java.io", "Reader", True, "read", "", "", "Argument[this]", "Argument[0]", "taint", "manual"]
9394
- ["java.io", "StringReader", False, "StringReader", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
95+
- ["java.io", "StringWriter", False, "toString", "()", "", "Argument[-1]", "ReturnValue", "taint", "manual"] # ! currently supported by taintPreservingQualifierToMethod?
96+
- ["java.io", "UncheckedIOException", False, "UncheckedIOException", "(IOException)", "", "Argument[0]", "Argument[-1].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
9497
- ["java.io", "Writer", True, "write", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
9598
- addsTo:
9699
pack: codeql/java-all
97100
extensible: neutralModel
98101
data:
99102
- ["java.io", "File", "delete", "()", "manual"]
100103
- ["java.io", "File", "exists", "()", "manual"]
104+
- ["java.io", "File", "isDirectory", "()", "manual"]
105+
- ["java.io", "File", "mkdirs", "()", "manual"]

java/ql/lib/ext/java.lang.model.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,14 @@ extensions:
4848
- ["java.lang", "AbstractStringBuilder", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
4949
- ["java.lang", "Appendable", True, "append", "", "", "Argument[this]", "ReturnValue", "value", "manual"]
5050
- ["java.lang", "Appendable", True, "append", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
51+
- ["java.lang", "AssertionError", False, "AssertionError", "(Object)", "", "Argument[0]", "Argument[-1].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
5152
- ["java.lang", "CharSequence", True, "charAt", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
5253
- ["java.lang", "CharSequence", True, "subSequence", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
5354
- ["java.lang", "CharSequence", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
55+
- ["java.lang", "Class", False, "cast", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "manual"]
5456
- ["java.lang", "Exception", False, "Exception", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
57+
- ["java.lang", "Exception", False, "Exception", "(String,Throwable)", "", "Argument[0]", "Argument[-1].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
58+
- ["java.lang", "Exception", False, "Exception", "(String,Throwable)", "", "Argument[1]", "Argument[-1].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
5559
- ["java.lang", "IllegalArgumentException", False, "IllegalArgumentException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
5660
- ["java.lang", "IllegalStateException", False, "IllegalStateException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
5761
- ["java.lang", "IndexOutOfBoundsException", False, "IndexOutOfBoundsException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
@@ -104,26 +108,39 @@ extensions:
104108
- ["java.lang", "String", False, "valueOf", "(char)", "", "Argument[0]", "ReturnValue", "taint", "manual"]
105109
- ["java.lang", "String", False, "valueOf", "(char[])", "", "Argument[0]", "ReturnValue", "taint", "manual"]
106110
- ["java.lang", "String", False, "valueOf", "(char[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "manual"]
111+
# ! why do below have subtype=True for constructors?
107112
- ["java.lang", "StringBuffer", True, "StringBuffer", "(CharSequence)", "", "Argument[0]", "Argument[this]", "taint", "manual"]
108113
- ["java.lang", "StringBuffer", True, "StringBuffer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"]
109114
- ["java.lang", "StringBuilder", True, "StringBuilder", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
115+
- ["java.lang", "StringBuilder", False, "delete", "(int,int)", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
110116
- ["java.lang", "System", False, "arraycopy", "", "", "Argument[0]", "Argument[2]", "taint", "manual"]
117+
- ["java.lang", "System", False, "getenv", "(String)", "", "Argument[-1].MapValue", "ReturnValue", "value", "manual"] # ! neutral instead?
118+
- ["java.lang", "System", False, "getenv", "(String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] # ! really unsure about this...; neutral instead? -- or unmodelled
119+
- ["java.lang", "Thread", False, "Thread", "(Runnable)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] # ! neutral instead?
111120
- ["java.lang", "ThreadLocal", True, "get", "()", "", "Argument[-1].SyntheticField[java.lang.ThreadLocal.value]", "ReturnValue", "value", "manual"] # ! not sure if this model is correct, and if should be neutral model instead
112121
- ["java.lang", "Throwable", False, "Throwable", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
113122
- ["java.lang", "Throwable", True, "getCause", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "ReturnValue", "value", "manual"]
114123
- ["java.lang", "Throwable", True, "getMessage", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"]
124+
- ["java.lang", "Throwable", True, "getLocalizedMessage", "()", "", "Argument[-1].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"] # ! should the field used be different?
115125
- ["java.lang", "Throwable", True, "toString", "()", "", "Argument[-1].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "taint", "manual"] # ! little unsure about this one...
116126
- addsTo:
117127
pack: codeql/java-all
118128
extensible: neutralModel
119129
data:
120130
- ["java.lang", "AbstractStringBuilder", "length", "()", "manual"]
121131
- ["java.lang", "Boolean", "equals", "(Object)", "manual"]
132+
- ["java.lang", "Boolean", "valueOf", "(boolean)", "manual"]
133+
- ["java.lang", "Class", "forName", "(String)", "manual"]
122134
- ["java.lang", "Class", "getCanonicalName", "()", "manual"]
123135
- ["java.lang", "Class", "getClassLoader", "()", "manual"]
136+
- ["java.lang", "Class", "getMethod", "(String,Class[])", "manual"]
124137
- ["java.lang", "Class", "getName", "()", "manual"]
138+
- ["java.lang", "Class", "getResource", "(String)", "manual"]
139+
- ["java.lang", "Class", "getResourceAsStream", "(String)", "manual"]
125140
- ["java.lang", "Class", "getSimpleName", "()", "manual"]
126141
- ["java.lang", "Class", "isAssignableFrom", "(Class)", "manual"]
142+
- ["java.lang", "Class", "isInstance", "(Object)", "manual"]
143+
- ["java.lang", "Class", "toString", "()", "manual"]
127144
- ["java.lang", "Enum", "Enum", "(String,int)", "manual"]
128145
- ["java.lang", "Enum", "equals", "(Object)", "manual"]
129146
- ["java.lang", "Enum", "hashCode", "()", "manual"]
@@ -146,24 +163,33 @@ extensions:
146163
- ["java.lang", "String", "indexOf", "(int)", "manual"]
147164
- ["java.lang", "String", "indexOf", "(String)", "manual"]
148165
- ["java.lang", "String", "isEmpty", "()", "manual"]
166+
- ["java.lang", "String", "lastIndexOf", "(int)", "manual"]
149167
- ["java.lang", "String", "length", "()", "manual"]
150168
- ["java.lang", "String", "startsWith", "(String)", "manual"]
151169
- ["java.lang", "System", "currentTimeMillis", "()", "manual"]
170+
- ["java.lang", "System", "exit", "(int)", "manual"]
171+
- ["java.lang", "System", "identityHashCode", "(Object)", "manual"]
152172
- ["java.lang", "System", "lineSeparator", "()", "manual"] # ! double-check...
153173
- ["java.lang", "System", "nanoTime", "()", "manual"]
154174
- ["java.lang", "Thread", "currentThread", "()", "manual"]
175+
- ["java.lang", "Thread", "interrupt", "()", "manual"]
155176
- ["java.lang", "Thread", "sleep", "(long)", "manual"]
156177
- ["java.lang", "Thread", "start", "()", "manual"]
157178
# The below APIs have numeric flow and are currently being stored as neutral models.
158179
# These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future.
159180
- ["java.lang", "Boolean", "booleanValue", "()", "manual"] # taint-numeric
160181
- ["java.lang", "Boolean", "parseBoolean", "(String)", "manual"] # taint-numeric
182+
- ["java.lang", "Double", "parseDouble", "(String)", "manual"] # taint-numeric
161183
- ["java.lang", "Integer", "Integer", "(int)", "manual"] # taint-numeric
162184
- ["java.lang", "Integer", "intValue", "()", "manual"] # taint-numeric
163185
- ["java.lang", "Integer", "parseInt", "(String)", "manual"] # taint-numeric
186+
- ["java.lang", "Integer", "toHexString", "(int)", "manual"] # taint-numeric
187+
- ["java.lang", "Integer", "toString", "()", "manual"] # taint-numeric
164188
- ["java.lang", "Integer", "toString", "(int)", "manual"] # taint-numeric
165189
- ["java.lang", "Integer", "valueOf", "(int)", "manual"] # taint-numeric
166190
- ["java.lang", "Integer", "valueOf", "(String)", "manual"] # taint-numeric # ! should probably make this and others like it have a "" signature instead...
191+
- ["java.lang", "Long", "Long", "(long)", "manual"] # taint-numeric
192+
- ["java.lang", "Long", "intValue", "()", "manual"] # taint-numeric
167193
- ["java.lang", "Long", "longValue", "()", "manual"] # taint-numeric
168194
- ["java.lang", "Long", "parseLong", "(String)", "manual"] # taint-numeric
169195
- ["java.lang", "Long", "toString", "()", "manual"] # taint-numeric

java/ql/lib/ext/java.lang.reflect.model.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ extensions:
33
pack: codeql/java-all
44
extensible: summaryModel
55
data:
6+
- ["java.lang.reflect", "Constructor", False, "newInstance", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue.Parameter", "value", "manual"] # ! unsure about input/output
67
- ["java.lang.reflect", "Method", False, "invoke", "(Object,Object[])", "", "Argument[1].ArrayElement", "Argument[-1].Parameter[0]", "value", "manual"] # ! very unsure if this model is correct...
78

89
- addsTo:

java/ql/lib/ext/java.math.model.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@ extensions:
77

88
# The below APIs have numeric flow and are currently being stored as neutral models.
99
# These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future.
10-
- ["java.math", "BigDecimal", "BigDecimal", "(int)", "manual"] # taint-numeric
11-
- ["java.math", "BigDecimal", "BigDecimal", "(String)", "manual"] # taint-numeric
12-
- ["java.math", "BigDecimal", "add", "(BigDecimal)", "manual"] # taint-numeric
13-
- ["java.math", "BigDecimal", "valueOf", "(double)", "manual"] # taint-numeric
14-
- ["java.math", "BigDecimal", "valueOf", "(long)", "manual"] # taint-numeric
15-
- ["java.math", "BigInteger", "valueOf", "(long)", "manual"] # taint-numeric
10+
- ["java.math", "BigDecimal", "BigDecimal", "(int)", "manual"] # taint-numeric
11+
- ["java.math", "BigDecimal", "BigDecimal", "(String)", "manual"] # taint-numeric
12+
- ["java.math", "BigDecimal", "add", "(BigDecimal)", "manual"] # taint-numeric
13+
- ["java.math", "BigDecimal", "doubleValue", "()", "manual"] # taint-numeric
14+
- ["java.math", "BigDecimal", "setScale", "(int,RoundingMode)", "manual"] # taint-numeric
15+
- ["java.math", "BigDecimal", "toString", "()", "manual"] # taint-numeric
16+
- ["java.math", "BigDecimal", "valueOf", "(double)", "manual"] # taint-numeric
17+
- ["java.math", "BigDecimal", "valueOf", "(long)", "manual"] # taint-numeric
18+
- ["java.math", "BigInteger", "or", "(BigInteger)", "manual"] # taint-numeric
19+
- ["java.math", "BigInteger", "valueOf", "(long)", "manual"] # taint-numeric

java/ql/lib/ext/java.nio.file.model.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,9 @@ extensions:
6161
# - ["java.nio.file", "Files", True, "walkFileTree", "(Path,FileVisitor)", "", "Argument[0]", "Argument[1].Method[preVisitDirectory(Path,BasicFileAttributes)].Parameter[0]", "taint", "ai-generated"]
6262
# - ["java.nio.file", "Files", True, "walkFileTree", "(Path,FileVisitor)", "", "Argument[0]" "Argument[1].Method[visitFile(Path,BasicFileAttributes)].Parameter[0]", "taint", "ai-generated"]
6363
# - ["java.nio.file", "Files", True, "walkFileTree", "(Path,FileVisitor)", "", "Argument[0]", "Argument[1].Method[visitFileFailed(Path,IOException)].Parameter[0]", "taint", "ai-generated"]
64+
65+
- addsTo:
66+
pack: codeql/java-all
67+
extensible: neutralModel
68+
data:
69+
- ["java.nio.file", "Files", "exists", "(Path,LinkOption[])", "manual"]

java/ql/lib/ext/java.nio.model.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,10 @@ extensions:
66
- ["java.nio", "ByteBuffer", False, "array", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"]
77
- ["java.nio", "ByteBuffer", False, "get", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
88
- ["java.nio", "ByteBuffer", False, "wrap", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "manual"]
9+
10+
- addsTo:
11+
pack: codeql/java-all
12+
extensible: neutralModel
13+
data:
14+
- ["java.nio", "Buffer", "remaining", "()", "manual"]
15+
- ["java.nio", "ByteBuffer", "allocate", "(int)", "manual"]

java/ql/lib/ext/java.sql.model.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@ extensions:
2828
pack: codeql/java-all
2929
extensible: neutralModel
3030
data:
31+
- ["java.sql", "PreparedStatement", "executeUpdate", "()", "manual"]
3132
- ["java.sql", "ResultSet", "next", "()", "manual"]
3233
# The below APIs have numeric flow and are currently being stored as neutral models.
3334
# These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future.
34-
- ["java.sql", "PreparedStatement", "setInt", "(int,int)", "manual"] # value-numeric
35-
- ["java.sql", "ResultSet", "getInt", "(String)", "manual"] # taint-numeric
36-
- ["java.sql", "ResultSet", "getLong", "(String)", "manual"] # taint-numeric
37-
- ["java.sql", "ResultSet", "getString", "(int)", "manual"] # taint-numeric
38-
- ["java.sql", "Timestamp", "Timestamp", "(long)", "manual"] # taint-numeric
35+
- ["java.sql", "PreparedStatement", "setInt", "(int,int)", "manual"] # value-numeric
36+
- ["java.sql", "PreparedStatement", "setLong", "(int,long)", "manual"] # value-numeric
37+
- ["java.sql", "ResultSet", "getInt", "(String)", "manual"] # taint-numeric
38+
- ["java.sql", "ResultSet", "getLong", "(String)", "manual"] # taint-numeric
39+
- ["java.sql", "ResultSet", "getString", "(int)", "manual"] # taint-numeric
40+
- ["java.sql", "Timestamp", "Timestamp", "(long)", "manual"] # taint-numeric
41+
- ["java.sql", "Timestamp", "getTime", "()", "manual"] # taint-numeric

java/ql/lib/ext/java.text.model.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ extensions:
44
extensible: summaryModel
55
data:
66
- ["java.text", "DateFormat", True, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] # ! maybe not interesting flow and should be neutral model?
7+
- ["java.text", "MessageFormat", False, "format", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "manual"] # ! not sure I did this right
8+
- ["java.text", "MessageFormat", False, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] # ! not sure I did this right
79

810
- addsTo:
911
pack: codeql/java-all
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
extensions:
2+
- addsTo:
3+
pack: codeql/java-all
4+
extensible: summaryModel
5+
data:
6+
- ["java.time.chrono", "ChronoZonedDateTime", False, "toInstant", "()", "", "Argument[-1]", "ReturnValue", "taint", "manual"] # ! neutral?

0 commit comments

Comments
 (0)