Skip to content

Commit 971b0e8

Browse files
Jami CogswellJami Cogswell
authored andcommitted
Java: -1 to this conflict
1 parent a6b775f commit 971b0e8

18 files changed

Lines changed: 131 additions & 12 deletions

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

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.awt", "Container", True, "add", "(Component,Object)", "", "Argument[0]", "Argument[-1].Element", "value", "manual"]

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,11 @@ extensions:
5959
- ["java.io", "CharArrayReader", False, "CharArrayReader", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
6060
- ["java.io", "CharArrayWriter", True, "toCharArray", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
6161
- ["java.io", "DataInput", True, "readFully", "", "", "Argument[this]", "Argument[0]", "taint", "manual"]
62+
- ["java.io", "DataInput", True, "readInt", "()", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
6263
- ["java.io", "DataInput", True, "readLine", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"]
6364
- ["java.io", "DataInput", True, "readUTF", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"]
6465
- ["java.io", "DataInputStream", False, "DataInputStream", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
66+
- ["java.io", "DataOutput", True, "writeInt", "(int)", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
6567
- ["java.io", "File", False, "File", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
6668
- ["java.io", "File", False, "File", "", "", "Argument[1]", "Argument[this]", "taint", "manual"]
6769
- ["java.io", "File", True, "getAbsoluteFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
@@ -72,6 +74,7 @@ extensions:
7274
- ["java.io", "File", True, "toPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
7375
- ["java.io", "File", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
7476
- ["java.io", "File", True, "toURI", "", "", "Argument[this]", "ReturnValue", "taint", "manual"]
77+
- ["java.io", "FileInputStream", False, "FileInputStream", "(File)", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
7578
- ["java.io", "FilterOutputStream", True, "FilterOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "manual"]
7679
- ["java.io", "InputStream", True, "read", "(byte[])", "", "Argument[this]", "Argument[0]", "taint", "manual"]
7780
- ["java.io", "InputStream", True, "read", "(byte[],int,int)", "", "Argument[this]", "Argument[0]", "taint", "manual"]
@@ -93,4 +96,5 @@ extensions:
9396
pack: codeql/java-all
9497
extensible: neutralModel
9598
data:
99+
- ["java.io", "File", "delete", "()", "manual"]
96100
- ["java.io", "File", "exists", "()", "manual"]

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

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ extensions:
5858
- ["java.lang", "Iterable", True, "forEach", "(Consumer)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"]
5959
- ["java.lang", "Iterable", True, "iterator", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"]
6060
- ["java.lang", "Iterable", True, "spliterator", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"]
61+
- ["java.lang", "NullPointerException", False, "NullPointerException", "(String)", "", "Argument[0]", "Argument[-1].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
6162
- ["java.lang", "Object", True, "clone", "", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"]
6263
- ["java.lang", "Object", True, "clone", "", "", "Argument[this].MapKey", "ReturnValue.MapKey", "value", "manual"]
6364
- ["java.lang", "Object", True, "clone", "", "", "Argument[this].MapValue", "ReturnValue.MapValue", "value", "manual"]
@@ -107,50 +108,69 @@ extensions:
107108
- ["java.lang", "StringBuffer", True, "StringBuffer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"]
108109
- ["java.lang", "StringBuilder", True, "StringBuilder", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
109110
- ["java.lang", "System", False, "arraycopy", "", "", "Argument[0]", "Argument[2]", "taint", "manual"]
111+
- ["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
110112
- ["java.lang", "Throwable", False, "Throwable", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
111113
- ["java.lang", "Throwable", True, "getCause", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "ReturnValue", "value", "manual"]
112114
- ["java.lang", "Throwable", True, "getMessage", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"]
115+
- ["java.lang", "Throwable", True, "toString", "()", "", "Argument[-1].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "taint", "manual"] # ! little unsure about this one...
113116
- addsTo:
114117
pack: codeql/java-all
115118
extensible: neutralModel
116119
data:
117120
- ["java.lang", "AbstractStringBuilder", "length", "()", "manual"]
118121
- ["java.lang", "Boolean", "equals", "(Object)", "manual"]
122+
- ["java.lang", "Class", "getCanonicalName", "()", "manual"]
119123
- ["java.lang", "Class", "getClassLoader", "()", "manual"]
120124
- ["java.lang", "Class", "getName", "()", "manual"]
121125
- ["java.lang", "Class", "getSimpleName", "()", "manual"]
122126
- ["java.lang", "Class", "isAssignableFrom", "(Class)", "manual"]
123127
- ["java.lang", "Enum", "Enum", "(String,int)", "manual"]
124128
- ["java.lang", "Enum", "equals", "(Object)", "manual"]
129+
- ["java.lang", "Enum", "hashCode", "()", "manual"]
125130
- ["java.lang", "Enum", "name", "()", "manual"]
131+
- ["java.lang", "Enum", "ordinal", "()", "manual"]
126132
- ["java.lang", "Enum", "toString", "()", "manual"]
133+
- ["java.lang", "Integer", "equals", "(Object)", "manual"]
127134
- ["java.lang", "Long", "equals", "(Object)", "manual"]
128135
- ["java.lang", "Object", "equals", "(Object)", "manual"]
129136
- ["java.lang", "Object", "getClass", "()", "manual"]
130137
- ["java.lang", "Object", "hashCode", "()", "manual"]
131138
- ["java.lang", "Object", "toString", "()", "manual"]
139+
- ["java.lang", "Runnable", "run", "()", "manual"]
140+
- ["java.lang", "String", "compareTo", "(String)", "manual"]
132141
- ["java.lang", "String", "contains", "(CharSequence)", "manual"]
133142
- ["java.lang", "String", "endsWith", "(String)", "manual"]
134143
- ["java.lang", "String", "equals", "(Object)", "manual"]
135144
- ["java.lang", "String", "equalsIgnoreCase", "(String)", "manual"]
136145
- ["java.lang", "String", "hashCode", "()", "manual"]
146+
- ["java.lang", "String", "indexOf", "(int)", "manual"]
137147
- ["java.lang", "String", "indexOf", "(String)", "manual"]
138148
- ["java.lang", "String", "isEmpty", "()", "manual"]
139149
- ["java.lang", "String", "length", "()", "manual"]
140150
- ["java.lang", "String", "startsWith", "(String)", "manual"]
141151
- ["java.lang", "System", "currentTimeMillis", "()", "manual"]
152+
- ["java.lang", "System", "lineSeparator", "()", "manual"] # ! double-check...
142153
- ["java.lang", "System", "nanoTime", "()", "manual"]
143154
- ["java.lang", "Thread", "currentThread", "()", "manual"]
144155
- ["java.lang", "Thread", "sleep", "(long)", "manual"]
156+
- ["java.lang", "Thread", "start", "()", "manual"]
145157
# The below APIs have numeric flow and are currently being stored as neutral models.
146158
# These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future.
147-
- ["java.lang", "Integer", "intValue", "()", "manual"] # taint-numeric
148-
- ["java.lang", "Integer", "parseInt", "(String)", "manual"] # taint-numeric
149-
- ["java.lang", "Integer", "toString", "(int)", "manual"] # taint-numeric
150-
- ["java.lang", "Integer", "valueOf", "(int)", "manual"] # taint-numeric
151-
- ["java.lang", "Long", "longValue", "()", "manual"] # taint-numeric
152-
- ["java.lang", "Long", "parseLong", "(String)", "manual"] # taint-numeric
153-
- ["java.lang", "Long", "toString", "()", "manual"] # taint-numeric
154-
- ["java.lang", "Math", "min", "(int,int)", "manual"] # value-numeric
155-
- ["java.lang", "String", "valueOf", "(int)", "manual"] # taint-numeric
156-
- ["java.lang", "String", "valueOf", "(long)", "manual"] # taint-numeric
159+
- ["java.lang", "Boolean", "booleanValue", "()", "manual"] # taint-numeric
160+
- ["java.lang", "Boolean", "parseBoolean", "(String)", "manual"] # taint-numeric
161+
- ["java.lang", "Integer", "Integer", "(int)", "manual"] # taint-numeric
162+
- ["java.lang", "Integer", "intValue", "()", "manual"] # taint-numeric
163+
- ["java.lang", "Integer", "parseInt", "(String)", "manual"] # taint-numeric
164+
- ["java.lang", "Integer", "toString", "(int)", "manual"] # taint-numeric
165+
- ["java.lang", "Integer", "valueOf", "(int)", "manual"] # taint-numeric
166+
- ["java.lang", "Integer", "valueOf", "(String)", "manual"] # taint-numeric # ! should probably make this and others like it have a "" signature instead...
167+
- ["java.lang", "Long", "longValue", "()", "manual"] # taint-numeric
168+
- ["java.lang", "Long", "parseLong", "(String)", "manual"] # taint-numeric
169+
- ["java.lang", "Long", "toString", "()", "manual"] # taint-numeric
170+
- ["java.lang", "Long", "toString", "(long)", "manual"] # taint-numeric
171+
- ["java.lang", "Long", "valueOf", "(long)", "manual"] # taint-numeric
172+
- ["java.lang", "Long", "valueOf", "(String)", "manual"] # taint-numeric
173+
- ["java.lang", "Math", "max", "(int,int)", "manual"] # value-numeric
174+
- ["java.lang", "Math", "min", "(int,int)", "manual"] # value-numeric
175+
- ["java.lang", "String", "valueOf", "(int)", "manual"] # taint-numeric
176+
- ["java.lang", "String", "valueOf", "(long)", "manual"] # taint-numeric
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
extensions:
2+
- addsTo:
3+
pack: codeql/java-all
4+
extensible: summaryModel
5+
data:
6+
- ["java.lang.reflect", "Method", False, "invoke", "(Object,Object[])", "", "Argument[1].ArrayElement", "Argument[-1].Parameter[0]", "value", "manual"] # ! very unsure if this model is correct...
7+
8+
- addsTo:
9+
pack: codeql/java-all
10+
extensible: neutralModel
11+
data:
12+
- ["java.lang.reflect", "Method", "getName", "()", "manual"] # ! seems uninteresting flow to me, but maybe double-check

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ 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
1011
- ["java.math", "BigDecimal", "BigDecimal", "(String)", "manual"] # taint-numeric
12+
- ["java.math", "BigDecimal", "add", "(BigDecimal)", "manual"] # taint-numeric
1113
- ["java.math", "BigDecimal", "valueOf", "(double)", "manual"] # taint-numeric
1214
- ["java.math", "BigDecimal", "valueOf", "(long)", "manual"] # taint-numeric
15+
- ["java.math", "BigInteger", "valueOf", "(long)", "manual"] # taint-numeric
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.nio.charset", "Charset", False, "name", "()", "", "Argument[-1].SyntheticField[java.nio.charset.Charset.canonicalName]", "ReturnValue", "value", "manual"]

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ extensions:
2121
extensible: summaryModel
2222
data:
2323
- ["java.sql", "Connection", True, "nativeSQL", "(String)", "", "Argument[0]", "ReturnValue", "taint", "manual"]
24+
- ["java.sql", "PreparedStatement", True, "executeQuery", "()", "", "Argument[-1]", "ReturnValue", "taint", "manual"] # ! this should maybe be a neutral model, not sure if this really counts as "flow through"...
2425
- ["java.sql", "PreparedStatement", True, "setString", "(int,String)", "", "Argument[1]", "Argument[this]", "value", "manual"]
2526
- ["java.sql", "ResultSet", True, "getString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "manual"]
2627
- addsTo:
@@ -32,3 +33,6 @@ extensions:
3233
# These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future.
3334
- ["java.sql", "PreparedStatement", "setInt", "(int,int)", "manual"] # value-numeric
3435
- ["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

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
extensions:
2+
- addsTo:
3+
pack: codeql/java-all
4+
extensible: summaryModel
5+
data:
6+
- ["java.text", "DateFormat", True, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] # ! maybe not interesting flow and should be neutral model?
7+
28
- addsTo:
39
pack: codeql/java-all
410
extensible: neutralModel

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
extensions:
2+
- addsTo:
3+
pack: codeql/java-all
4+
extensible: summaryModel
5+
data:
6+
- ["java.time", "Duration", False, "ofSeconds", "(long)", "", "Argument[0]", "ReturnValue", "taint", "manual"] # ! maybe not interesting flow and should be neutral model?
7+
28
- addsTo:
39
pack: codeql/java-all
410
extensible: neutralModel
511
data:
612
- ["java.time", "Instant", "now", "()", "manual"]
13+
- ["java.time", "LocalDate", "now", "()", "manual"]
14+
- ["java.time", "LocalDateTime", "now", "()", "manual"]
715
- ["java.time", "ZonedDateTime", "now", "()", "manual"]
816

917
# The below APIs have numeric flow and are currently being stored as neutral models.

java/ql/lib/ext/java.util.concurrent.atomic.model.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@ extensions:
55
data:
66
- ["java.util.concurrent.atomic", "AtomicReference", False, "AtomicReference", "(Object)", "", "Argument[0]", "Argument[this].SyntheticField[java.util.concurrent.atomic.AtomicReference.value]", "value", "manual"]
77
- ["java.util.concurrent.atomic", "AtomicReference", False, "get", "()", "", "Argument[this].SyntheticField[java.util.concurrent.atomic.AtomicReference.value]", "ReturnValue", "value", "manual"]
8+
- ["java.util.concurrent.atomic", "AtomicReference", False, "set", "(Object)", "", "Argument[0]", "Argument[-1].SyntheticField[java.util.concurrent.atomic.AtomicReference.value]", "value", "manual"]
89

910
- addsTo:
1011
pack: codeql/java-all
1112
extensible: neutralModel
1213
data:
14+
- ["java.util.concurrent.atomic", "AtomicBoolean", "get", "()", "manual"]
15+
- ["java.util.concurrent.atomic", "AtomicBoolean", "set", "(boolean)", "manual"]
16+
1317
# The below APIs have numeric flow and are currently being stored as neutral models.
1418
# These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future.
1519
- ["java.util.concurrent.atomic", "AtomicInteger", "AtomicInteger", "(int)", "manual"] # value-numeric
1620
- ["java.util.concurrent.atomic", "AtomicInteger", "get", "()", "manual"] # value-numeric
21+
- ["java.util.concurrent.atomic", "AtomicInteger", "incrementAndGet", "()", "manual"] # taint-numeric
22+
- ["java.util.concurrent.atomic", "AtomicLong", "get", "()", "manual"] # value-numeric

0 commit comments

Comments
 (0)