3
3
import csharp
4
4
private import semmle.code.csharp.frameworks.System
5
5
private import semmle.code.csharp.dataflow.DataFlow3
6
+ private import semmle.code.csharp.dataflow.ExternalFlow
6
7
7
8
/** The `System.Xml` namespace. */
8
9
class SystemXmlNamespace extends Namespace {
@@ -35,8 +36,20 @@ class SystemXmlXmlDocumentClass extends Class {
35
36
/** Gets the `Load` method. */
36
37
Method getLoadMethod ( ) {
37
38
result = this .getAMethod ( ) and
38
- result .hasName ( "Load" ) and
39
- result .isStatic ( )
39
+ result .hasName ( "Load" )
40
+ }
41
+ }
42
+
43
+ /** Data flow for `System.Xml.XmlDocument`. */
44
+ private class SystemXmlXmlDocumentFlowModelCsv extends SummaryModelCsv {
45
+ override predicate row ( string row ) {
46
+ row =
47
+ [
48
+ "System.Xml;XmlDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[-1];taint" ,
49
+ "System.Xml;XmlDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[-1];taint" ,
50
+ "System.Xml;XmlDocument;false;Load;(System.String);;Argument[0];Argument[-1];taint" ,
51
+ "System.Xml;XmlDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[-1];taint"
52
+ ]
40
53
}
41
54
}
42
55
@@ -55,6 +68,27 @@ class SystemXmlXmlReaderClass extends Class {
55
68
}
56
69
}
57
70
71
+ /** Data flow for `System.Xml.XmlReader`. */
72
+ private class SystemXmlXmlReaderFlowModelCsv extends SummaryModelCsv {
73
+ override predicate row ( string row ) {
74
+ row =
75
+ [
76
+ "System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint" ,
77
+ "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint" ,
78
+ "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint" ,
79
+ "System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint" ,
80
+ "System.Xml;XmlReader;false;Create;(System.IO.TextReader);;Argument[0];ReturnValue;taint" ,
81
+ "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint" ,
82
+ "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint" ,
83
+ "System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint" ,
84
+ "System.Xml;XmlReader;false;Create;(System.String);;Argument[0];ReturnValue;taint" ,
85
+ "System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint" ,
86
+ "System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint" ,
87
+ "System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint"
88
+ ]
89
+ }
90
+ }
91
+
58
92
/** The `System.Xml.XmlReaderSettings` class. */
59
93
class SystemXmlXmlReaderSettingsClass extends Class {
60
94
SystemXmlXmlReaderSettingsClass ( ) {
@@ -101,6 +135,42 @@ class SystemXmlXmlNodeClass extends Class {
101
135
}
102
136
}
103
137
138
+ /** Data flow for `System.Xml.XmlNode`. */
139
+ private class SystemXmlXmlNodeFlowModelCsv extends SummaryModelCsv {
140
+ override predicate row ( string row ) {
141
+ row =
142
+ [
143
+ "System.Xml;XmlNode;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value" ,
144
+ "System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[-1];ReturnValue;taint" ,
145
+ "System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[-1];ReturnValue;taint" ,
146
+ "System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[-1];ReturnValue;taint" ,
147
+ "System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[-1];ReturnValue;taint" ,
148
+ "System.Xml;XmlNode;true;get_Attributes;();;Argument[-1];ReturnValue;taint" ,
149
+ "System.Xml;XmlNode;true;get_BaseURI;();;Argument[-1];ReturnValue;taint" ,
150
+ "System.Xml;XmlNode;true;get_ChildNodes;();;Argument[-1];ReturnValue;taint" ,
151
+ "System.Xml;XmlNode;true;get_FirstChild;();;Argument[-1];ReturnValue;taint" ,
152
+ "System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[-1];ReturnValue;taint" ,
153
+ "System.Xml;XmlNode;true;get_InnerText;();;Argument[-1];ReturnValue;taint" ,
154
+ "System.Xml;XmlNode;true;get_InnerXml;();;Argument[-1];ReturnValue;taint" ,
155
+ "System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[-1];ReturnValue;taint" ,
156
+ "System.Xml;XmlNode;true;get_LastChild;();;Argument[-1];ReturnValue;taint" ,
157
+ "System.Xml;XmlNode;true;get_LocalName;();;Argument[-1];ReturnValue;taint" ,
158
+ "System.Xml;XmlNode;true;get_Name;();;Argument[-1];ReturnValue;taint" ,
159
+ "System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[-1];ReturnValue;taint" ,
160
+ "System.Xml;XmlNode;true;get_NextSibling;();;Argument[-1];ReturnValue;taint" ,
161
+ "System.Xml;XmlNode;true;get_NodeType;();;Argument[-1];ReturnValue;taint" ,
162
+ "System.Xml;XmlNode;true;get_OuterXml;();;Argument[-1];ReturnValue;taint" ,
163
+ "System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[-1];ReturnValue;taint" ,
164
+ "System.Xml;XmlNode;true;get_ParentNode;();;Argument[-1];ReturnValue;taint" ,
165
+ "System.Xml;XmlNode;true;get_Prefix;();;Argument[-1];ReturnValue;taint" ,
166
+ "System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[-1];ReturnValue;taint" ,
167
+ "System.Xml;XmlNode;true;get_PreviousText;();;Argument[-1];ReturnValue;taint" ,
168
+ "System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[-1];ReturnValue;taint" ,
169
+ "System.Xml;XmlNode;true;get_Value;();;Argument[-1];ReturnValue;taint"
170
+ ]
171
+ }
172
+ }
173
+
104
174
/** The `System.Xml.XmlNamedNodeMap` class. */
105
175
class SystemXmlXmlNamedNodeMapClass extends Class {
106
176
SystemXmlXmlNamedNodeMapClass ( ) {
@@ -115,6 +185,17 @@ class SystemXmlXmlNamedNodeMapClass extends Class {
115
185
}
116
186
}
117
187
188
+ /** Data flow for `System.Xml.XmlNamedNodeMap`. */
189
+ private class SystemXmlXmlNamedNodeMapClassFlowModelCsv extends SummaryModelCsv {
190
+ override predicate row ( string row ) {
191
+ row =
192
+ [
193
+ "System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[-1];ReturnValue;value" ,
194
+ "System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[-1];ReturnValue;value"
195
+ ]
196
+ }
197
+ }
198
+
118
199
/** An enum constant in `System.Xml.ValidationType`. */
119
200
class SystemXmlValidationType extends EnumConstant {
120
201
SystemXmlValidationType ( ) {
0 commit comments