Skip to content

Commit 43d4575

Browse files
committed
Add createParser as taint preserving callable
1 parent e587465 commit 43d4575

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

java/ql/src/semmle/code/java/frameworks/jackson/JacksonSerializability.qll

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ private class JacksonWriteValueMethod extends Method, TaintPreservingCallable {
5151
}
5252
}
5353

54+
/**
55+
* A method used for deserializing objects using Jackson. The first parameter is the object to be
56+
* deserialized.
57+
*/
5458
private class JacksonReadValueMethod extends Method, TaintPreservingCallable {
5559
JacksonReadValueMethod() {
5660
(
@@ -63,6 +67,23 @@ private class JacksonReadValueMethod extends Method, TaintPreservingCallable {
6367
override predicate returnsTaintFrom(int arg) { arg = 0 }
6468
}
6569

70+
/**
71+
* A method used for creating a `JsonParser` object using Jackson. The first parameter is the object to
72+
* create the `JsonParser` from.
73+
*/
74+
private class JacksonCreateParserMethod extends Method, TaintPreservingCallable {
75+
JacksonCreateParserMethod() {
76+
(
77+
getDeclaringType().hasQualifiedName("com.fasterxml.jackson.core", "JsonFactory") or
78+
getDeclaringType().hasQualifiedName("com.fasterxml.jackson.databind", "ObjectMapper") or
79+
getDeclaringType().hasQualifiedName("com.fasterxml.jackson.databind", "ObjectReader")
80+
) and
81+
hasName("createParser")
82+
}
83+
84+
override predicate returnsTaintFrom(int arg) { arg = 0 }
85+
}
86+
6687
/** A type whose values are explicitly serialized in a call to a Jackson method. */
6788
private class ExplicitlyWrittenJacksonSerializableType extends JacksonSerializableType {
6889
ExplicitlyWrittenJacksonSerializableType() {

0 commit comments

Comments
 (0)