Skip to content

Commit 2f01688

Browse files
authored
Merge pull request github#15280 from owen-mc/java/add-manual-models-for-df-generation
Java: improve models for some important JDK methods
2 parents dba2e06 + 9e2e01f commit 2f01688

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* Improved models for `java.lang.Throwable` and `java.lang.Exception`, and the `valueOf` method of `java.lang.String`.

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ extensions:
7979
- ["java.lang", "Exception", False, "Exception", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
8080
- ["java.lang", "Exception", False, "Exception", "(String,Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
8181
- ["java.lang", "Exception", False, "Exception", "(String,Throwable)", "", "Argument[1]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
82+
- ["java.lang", "Exception", False, "Exception", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
83+
- ["java.lang", "Exception", False, "Exception", "(Throwable)", "", "Argument[0].SyntheticField[java.lang.Throwable.message]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "taint", "manual"]
8284
- ["java.lang", "IllegalArgumentException", False, "IllegalArgumentException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
8385
- ["java.lang", "IllegalStateException", False, "IllegalStateException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
8486
- ["java.lang", "IndexOutOfBoundsException", False, "IndexOutOfBoundsException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
@@ -131,6 +133,7 @@ extensions:
131133
- ["java.lang", "String", False, "valueOf", "(char)", "", "Argument[0]", "ReturnValue", "taint", "manual"]
132134
- ["java.lang", "String", False, "valueOf", "(char[])", "", "Argument[0]", "ReturnValue", "taint", "manual"]
133135
- ["java.lang", "String", False, "valueOf", "(char[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "manual"]
136+
- ["java.lang", "String", False, "valueOf", "(CharSequence)", "", "Argument[0]", "ReturnValue", "taint", "manual"]
134137
- ["java.lang", "StringBuffer", True, "StringBuffer", "(CharSequence)", "", "Argument[0]", "Argument[this]", "taint", "manual"]
135138
- ["java.lang", "StringBuffer", True, "StringBuffer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"]
136139
- ["java.lang", "StringBuilder", True, "StringBuilder", "", "", "Argument[0]", "Argument[this]", "taint", "manual"]
@@ -141,11 +144,17 @@ extensions:
141144
- ["java.lang", "ThreadLocal", True, "get", "()", "", "Argument[this].SyntheticField[java.lang.ThreadLocal.value]", "ReturnValue", "value", "manual"]
142145
- ["java.lang", "ThreadLocal", True, "set", "(Object)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.ThreadLocal.value]", "value", "manual"]
143146
- ["java.lang", "ThreadLocal", False, "withInitial", "(Supplier)", "", "Argument[0].ReturnValue", "ReturnValue.SyntheticField[java.lang.ThreadLocal.value]", "value", "manual"]
144-
- ["java.lang", "Throwable", False, "Throwable", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
145147
- ["java.lang", "Throwable", False, "Throwable", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
148+
- ["java.lang", "Throwable", False, "Throwable", "(String,Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
149+
- ["java.lang", "Throwable", False, "Throwable", "(String,Throwable)", "", "Argument[1]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
150+
- ["java.lang", "Throwable", False, "Throwable", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
151+
- ["java.lang", "Throwable", False, "Throwable", "(Throwable)", "", "Argument[0].SyntheticField[java.lang.Throwable.message]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "taint", "manual"]
146152
- ["java.lang", "Throwable", True, "getCause", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "ReturnValue", "value", "manual"]
147153
- ["java.lang", "Throwable", True, "getMessage", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"]
148154
- ["java.lang", "Throwable", True, "getLocalizedMessage", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"]
155+
- ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
156+
- ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[0]", "ReturnValue.SyntheticField[java.lang.Throwable.cause]", "value", "manual"]
157+
- ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[this]", "ReturnValue", "value", "manual"]
149158
- ["java.lang", "Throwable", True, "toString", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "taint", "manual"]
150159
- ["java.lang", "UnsupportedOperationException", False, "UnsupportedOperationException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"]
151160
- addsTo:
@@ -202,6 +211,7 @@ extensions:
202211
- ["java.lang", "String", "length", "()", "summary", "manual"]
203212
- ["java.lang", "String", "startsWith", "(String)", "summary", "manual"]
204213
- ["java.lang", "String", "valueOf", "(boolean)", "summary", "manual"]
214+
- ["java.lang", "String", "valueOf", "(Object)", "summary", "manual"]
205215
- ["java.lang", "System", "currentTimeMillis", "()", "summary", "manual"]
206216
- ["java.lang", "System", "exit", "(int)", "summary", "manual"]
207217
- ["java.lang", "System", "getenv", "(String)", "summary", "manual"]
@@ -213,6 +223,14 @@ extensions:
213223
- ["java.lang", "Thread", "interrupt", "()", "summary", "manual"]
214224
- ["java.lang", "Thread", "sleep", "(long)", "summary", "manual"]
215225
- ["java.lang", "Thread", "start", "()", "summary", "manual"]
226+
- ["java.lang", "Throwable", "addSuppressed", "(Throwable)", "summary", "manual"]
227+
- ["java.lang", "Throwable", "fillInStackTrace", "()", "summary", "manual"]
228+
- ["java.lang", "Throwable", "getStackTrace", "()", "summary", "manual"]
229+
- ["java.lang", "Throwable", "getSuppressed", "()", "summary", "manual"]
230+
- ["java.lang", "Throwable", "printStackTrace", "()", "summary", "manual"]
231+
- ["java.lang", "Throwable", "printStackTrace", "(PrintStream)", "summary", "manual"]
232+
- ["java.lang", "Throwable", "printStackTrace", "(PrintWriter)", "summary", "manual"]
233+
- ["java.lang", "Throwable", "setStackTrace", "(StackTraceElement[])", "summary", "manual"]
216234
# The below APIs have numeric flow and are currently being stored as neutral models.
217235
# These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future.
218236
- ["java.lang", "Double", "doubleToLongBits", "(double)", "summary", "manual"] # taint-numeric

java/ql/test/ext/TopJdkApis/TopJdkApisTest.expected

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
| java.lang.Runnable#run() | no manual model |
2-
| java.lang.String#valueOf(Object) | no manual model |
32
| java.lang.System#getProperty(String) | no manual model |
43
| java.lang.System#setProperty(String,String) | no manual model |
5-
| java.lang.Throwable#printStackTrace() | no manual model |
64
| java.text.Format#format(Object) | no manual model |
75
| java.text.MessageFormat#format(String,Object[]) | no manual model |
86
| java.util.Comparator#comparing(Function) | no manual model |

0 commit comments

Comments
 (0)