Skip to content

Commit 58f36e4

Browse files
committed
C#: Convert NewtonSoft.Json.JSonSerializer flow to CSV format.
1 parent 90e4950 commit 58f36e4

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

csharp/ql/lib/semmle/code/csharp/frameworks/JsonNET.qll

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -166,30 +166,29 @@ module JsonNET {
166166
}
167167

168168
/** The class `NewtonSoft.Json.JsonSerializer`. */
169-
class JsonSerializerClass extends JsonClass, LibraryTypeDataFlow {
169+
class JsonSerializerClass extends JsonClass {
170170
JsonSerializerClass() { this.hasName("JsonSerializer") }
171171

172172
/** Gets the method for `JsonSerializer.Serialize`. */
173173
Method getSerializeMethod() { result = this.getAMethod("Serialize") }
174174

175175
/** Gets the method for `JsonSerializer.Deserialize`. */
176176
Method getDeserializeMethod() { result = this.getAMethod("Deserialize") }
177+
}
177178

178-
override predicate callableFlow(
179-
CallableFlowSource source, CallableFlowSink sink, SourceDeclarationCallable c,
180-
boolean preservesValue
181-
) {
182-
// Serialize
183-
c = this.getSerializeMethod() and
184-
preservesValue = false and
185-
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 1) and
186-
sink = any(CallableFlowSinkArg arg | arg.getArgumentIndex() = 0)
187-
or
188-
// Deserialize
189-
c = this.getDeserializeMethod() and
190-
preservesValue = false and
191-
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 0) and
192-
sink instanceof CallableFlowSinkReturn
179+
/** Data flow for `NewtonSoft.Json.JSonSerializer`. */
180+
private class JsonSerializerClassFlowModelCsv extends SummaryModelCsv {
181+
override predicate row(string row) {
182+
row =
183+
[
184+
"Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader);;Argument[0];ReturnValue;taint",
185+
"Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader,System.Type);;Argument[0];ReturnValue;taint",
186+
"Newtonsoft.Json;JsonSerializer;false;Deserialize;(System.IO.TextReader,System.Type);;Argument[0];ReturnValue;taint",
187+
"Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object);;Argument[1];Argument[0];taint",
188+
"Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object,System.Type);;Argument[1];Argument[0];taint",
189+
"Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object);;Argument[1];Argument[0];taint",
190+
"Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object,System.Type);;Argument[1];Argument[0];taint"
191+
]
193192
}
194193
}
195194

0 commit comments

Comments
 (0)