Skip to content

Commit 376ee33

Browse files
committed
C#: Convert System.Xml.XmlNode flow to CSV format.
1 parent 4a71aa2 commit 376ee33

File tree

3 files changed

+137
-22
lines changed

3 files changed

+137
-22
lines changed

csharp/ql/lib/semmle/code/csharp/dataflow/LibraryTypeDataFlow.qll

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,28 +1803,6 @@ class SystemXmlXmlDocumentFlow extends LibraryTypeDataFlow, SystemXmlXmlDocument
18031803
}
18041804
}
18051805

1806-
/** Data flow for `System.Xml.XmlNode`. */
1807-
class SystemXmlXmlNodeFlow extends LibraryTypeDataFlow, SystemXmlXmlNodeClass {
1808-
override predicate callableFlow(
1809-
CallableFlowSource source, CallableFlowSink sink, SourceDeclarationCallable c,
1810-
boolean preservesValue
1811-
) {
1812-
(
1813-
exists(Property p |
1814-
p = this.getAProperty() and
1815-
c = p.getGetter() and
1816-
source = TCallableFlowSourceQualifier() and
1817-
sink = TCallableFlowSinkReturn()
1818-
)
1819-
or
1820-
c = this.getASelectNodeMethod() and
1821-
source = TCallableFlowSourceQualifier() and
1822-
sink = TCallableFlowSinkReturn()
1823-
) and
1824-
preservesValue = false
1825-
}
1826-
}
1827-
18281806
/**
18291807
* Custom flow through `StringValues` library class.
18301808
*/

csharp/ql/lib/semmle/code/csharp/frameworks/system/Xml.qll

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,42 @@ class SystemXmlXmlNodeClass extends Class {
102102
}
103103
}
104104

105+
/** Data flow for `System.Xml.XmlNode`. */
106+
private class SystemXmlXmlNodeFlowModelCsv extends SummaryModelCsv {
107+
override predicate row(string row) {
108+
row =
109+
[
110+
"System.Xml;XmlNode;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value",
111+
"System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[-1];ReturnValue;taint",
112+
"System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[-1];ReturnValue;taint",
113+
"System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[-1];ReturnValue;taint",
114+
"System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[-1];ReturnValue;taint",
115+
"System.Xml;XmlNode;true;get_Attributes;();;Argument[-1];ReturnValue;taint",
116+
"System.Xml;XmlNode;true;get_BaseURI;();;Argument[-1];ReturnValue;taint",
117+
"System.Xml;XmlNode;true;get_ChildNodes;();;Argument[-1];ReturnValue;taint",
118+
"System.Xml;XmlNode;true;get_FirstChild;();;Argument[-1];ReturnValue;taint",
119+
"System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[-1];ReturnValue;taint",
120+
"System.Xml;XmlNode;true;get_InnerText;();;Argument[-1];ReturnValue;taint",
121+
"System.Xml;XmlNode;true;get_InnerXml;();;Argument[-1];ReturnValue;taint",
122+
"System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[-1];ReturnValue;taint",
123+
"System.Xml;XmlNode;true;get_LastChild;();;Argument[-1];ReturnValue;taint",
124+
"System.Xml;XmlNode;true;get_LocalName;();;Argument[-1];ReturnValue;taint",
125+
"System.Xml;XmlNode;true;get_Name;();;Argument[-1];ReturnValue;taint",
126+
"System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[-1];ReturnValue;taint",
127+
"System.Xml;XmlNode;true;get_NextSibling;();;Argument[-1];ReturnValue;taint",
128+
"System.Xml;XmlNode;true;get_NodeType;();;Argument[-1];ReturnValue;taint",
129+
"System.Xml;XmlNode;true;get_OuterXml;();;Argument[-1];ReturnValue;taint",
130+
"System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[-1];ReturnValue;taint",
131+
"System.Xml;XmlNode;true;get_ParentNode;();;Argument[-1];ReturnValue;taint",
132+
"System.Xml;XmlNode;true;get_Prefix;();;Argument[-1];ReturnValue;taint",
133+
"System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[-1];ReturnValue;taint",
134+
"System.Xml;XmlNode;true;get_PreviousText;();;Argument[-1];ReturnValue;taint",
135+
"System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[-1];ReturnValue;taint",
136+
"System.Xml;XmlNode;true;get_Value;();;Argument[-1];ReturnValue;taint"
137+
]
138+
}
139+
}
140+
105141
/** The `System.Xml.XmlNamedNodeMap` class. */
106142
class SystemXmlXmlNamedNodeMapClass extends Class {
107143
SystemXmlXmlNamedNodeMapClass() {

csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2283,8 +2283,80 @@
22832283
| System.Xml.Serialization;XmlSchemas;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value |
22842284
| System.Xml.Serialization;XmlSchemas;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Element of Argument[-1];value |
22852285
| System.Xml.XPath;XPathNodeIterator;true;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value |
2286+
| System.Xml;XmlAttribute;false;get_BaseURI;();;Argument[-1];ReturnValue;taint |
2287+
| System.Xml;XmlAttribute;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2288+
| System.Xml;XmlAttribute;false;get_Name;();;Argument[-1];ReturnValue;taint |
2289+
| System.Xml;XmlAttribute;false;get_NamespaceURI;();;Argument[-1];ReturnValue;taint |
2290+
| System.Xml;XmlAttribute;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2291+
| System.Xml;XmlAttribute;false;get_OwnerDocument;();;Argument[-1];ReturnValue;taint |
2292+
| System.Xml;XmlAttribute;false;get_ParentNode;();;Argument[-1];ReturnValue;taint |
2293+
| System.Xml;XmlAttribute;false;get_Prefix;();;Argument[-1];ReturnValue;taint |
2294+
| System.Xml;XmlAttribute;false;get_SchemaInfo;();;Argument[-1];ReturnValue;taint |
2295+
| System.Xml;XmlAttribute;false;get_Value;();;Argument[-1];ReturnValue;taint |
22862296
| System.Xml;XmlAttributeCollection;false;CopyTo;(System.Array,System.Int32);;Element of Argument[-1];Element of Argument[0];value |
22872297
| System.Xml;XmlAttributeCollection;false;CopyTo;(System.Xml.XmlAttribute[],System.Int32);;Element of Argument[-1];Element of Argument[0];value |
2298+
| System.Xml;XmlCDataSection;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2299+
| System.Xml;XmlCDataSection;false;get_Name;();;Argument[-1];ReturnValue;taint |
2300+
| System.Xml;XmlCDataSection;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2301+
| System.Xml;XmlCDataSection;false;get_ParentNode;();;Argument[-1];ReturnValue;taint |
2302+
| System.Xml;XmlCDataSection;false;get_PreviousText;();;Argument[-1];ReturnValue;taint |
2303+
| System.Xml;XmlCharacterData;false;get_InnerText;();;Argument[-1];ReturnValue;taint |
2304+
| System.Xml;XmlCharacterData;false;get_Value;();;Argument[-1];ReturnValue;taint |
2305+
| System.Xml;XmlComment;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2306+
| System.Xml;XmlComment;false;get_Name;();;Argument[-1];ReturnValue;taint |
2307+
| System.Xml;XmlComment;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2308+
| System.Xml;XmlDeclaration;false;get_InnerText;();;Argument[-1];ReturnValue;taint |
2309+
| System.Xml;XmlDeclaration;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2310+
| System.Xml;XmlDeclaration;false;get_Name;();;Argument[-1];ReturnValue;taint |
2311+
| System.Xml;XmlDeclaration;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2312+
| System.Xml;XmlDeclaration;false;get_Value;();;Argument[-1];ReturnValue;taint |
2313+
| System.Xml;XmlDocument;false;get_BaseURI;();;Argument[-1];ReturnValue;taint |
2314+
| System.Xml;XmlDocument;false;get_InnerXml;();;Argument[-1];ReturnValue;taint |
2315+
| System.Xml;XmlDocument;false;get_IsReadOnly;();;Argument[-1];ReturnValue;taint |
2316+
| System.Xml;XmlDocument;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2317+
| System.Xml;XmlDocument;false;get_Name;();;Argument[-1];ReturnValue;taint |
2318+
| System.Xml;XmlDocument;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2319+
| System.Xml;XmlDocument;false;get_OwnerDocument;();;Argument[-1];ReturnValue;taint |
2320+
| System.Xml;XmlDocument;false;get_ParentNode;();;Argument[-1];ReturnValue;taint |
2321+
| System.Xml;XmlDocument;false;get_SchemaInfo;();;Argument[-1];ReturnValue;taint |
2322+
| System.Xml;XmlDocumentFragment;false;get_InnerXml;();;Argument[-1];ReturnValue;taint |
2323+
| System.Xml;XmlDocumentFragment;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2324+
| System.Xml;XmlDocumentFragment;false;get_Name;();;Argument[-1];ReturnValue;taint |
2325+
| System.Xml;XmlDocumentFragment;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2326+
| System.Xml;XmlDocumentFragment;false;get_OwnerDocument;();;Argument[-1];ReturnValue;taint |
2327+
| System.Xml;XmlDocumentFragment;false;get_ParentNode;();;Argument[-1];ReturnValue;taint |
2328+
| System.Xml;XmlDocumentType;false;get_IsReadOnly;();;Argument[-1];ReturnValue;taint |
2329+
| System.Xml;XmlDocumentType;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2330+
| System.Xml;XmlDocumentType;false;get_Name;();;Argument[-1];ReturnValue;taint |
2331+
| System.Xml;XmlDocumentType;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2332+
| System.Xml;XmlElement;false;get_Attributes;();;Argument[-1];ReturnValue;taint |
2333+
| System.Xml;XmlElement;false;get_InnerText;();;Argument[-1];ReturnValue;taint |
2334+
| System.Xml;XmlElement;false;get_InnerXml;();;Argument[-1];ReturnValue;taint |
2335+
| System.Xml;XmlElement;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2336+
| System.Xml;XmlElement;false;get_Name;();;Argument[-1];ReturnValue;taint |
2337+
| System.Xml;XmlElement;false;get_NamespaceURI;();;Argument[-1];ReturnValue;taint |
2338+
| System.Xml;XmlElement;false;get_NextSibling;();;Argument[-1];ReturnValue;taint |
2339+
| System.Xml;XmlElement;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2340+
| System.Xml;XmlElement;false;get_OwnerDocument;();;Argument[-1];ReturnValue;taint |
2341+
| System.Xml;XmlElement;false;get_ParentNode;();;Argument[-1];ReturnValue;taint |
2342+
| System.Xml;XmlElement;false;get_Prefix;();;Argument[-1];ReturnValue;taint |
2343+
| System.Xml;XmlElement;false;get_SchemaInfo;();;Argument[-1];ReturnValue;taint |
2344+
| System.Xml;XmlEntity;false;get_BaseURI;();;Argument[-1];ReturnValue;taint |
2345+
| System.Xml;XmlEntity;false;get_InnerText;();;Argument[-1];ReturnValue;taint |
2346+
| System.Xml;XmlEntity;false;get_InnerXml;();;Argument[-1];ReturnValue;taint |
2347+
| System.Xml;XmlEntity;false;get_IsReadOnly;();;Argument[-1];ReturnValue;taint |
2348+
| System.Xml;XmlEntity;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2349+
| System.Xml;XmlEntity;false;get_Name;();;Argument[-1];ReturnValue;taint |
2350+
| System.Xml;XmlEntity;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2351+
| System.Xml;XmlEntity;false;get_OuterXml;();;Argument[-1];ReturnValue;taint |
2352+
| System.Xml;XmlEntityReference;false;get_BaseURI;();;Argument[-1];ReturnValue;taint |
2353+
| System.Xml;XmlEntityReference;false;get_IsReadOnly;();;Argument[-1];ReturnValue;taint |
2354+
| System.Xml;XmlEntityReference;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2355+
| System.Xml;XmlEntityReference;false;get_Name;();;Argument[-1];ReturnValue;taint |
2356+
| System.Xml;XmlEntityReference;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2357+
| System.Xml;XmlEntityReference;false;get_Value;();;Argument[-1];ReturnValue;taint |
2358+
| System.Xml;XmlLinkedNode;false;get_NextSibling;();;Argument[-1];ReturnValue;taint |
2359+
| System.Xml;XmlLinkedNode;false;get_PreviousSibling;();;Argument[-1];ReturnValue;taint |
22882360
| System.Xml;XmlNamedNodeMap;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value |
22892361
| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[-1];ReturnValue;value |
22902362
| System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[-1];ReturnValue;value |
@@ -2317,6 +2389,17 @@
23172389
| System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[-1];ReturnValue;taint |
23182390
| System.Xml;XmlNode;true;get_Value;();;Argument[-1];ReturnValue;taint |
23192391
| System.Xml;XmlNodeList;true;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value |
2392+
| System.Xml;XmlNotation;false;get_InnerXml;();;Argument[-1];ReturnValue;taint |
2393+
| System.Xml;XmlNotation;false;get_IsReadOnly;();;Argument[-1];ReturnValue;taint |
2394+
| System.Xml;XmlNotation;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2395+
| System.Xml;XmlNotation;false;get_Name;();;Argument[-1];ReturnValue;taint |
2396+
| System.Xml;XmlNotation;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2397+
| System.Xml;XmlNotation;false;get_OuterXml;();;Argument[-1];ReturnValue;taint |
2398+
| System.Xml;XmlProcessingInstruction;false;get_InnerText;();;Argument[-1];ReturnValue;taint |
2399+
| System.Xml;XmlProcessingInstruction;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2400+
| System.Xml;XmlProcessingInstruction;false;get_Name;();;Argument[-1];ReturnValue;taint |
2401+
| System.Xml;XmlProcessingInstruction;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2402+
| System.Xml;XmlProcessingInstruction;false;get_Value;();;Argument[-1];ReturnValue;taint |
23202403
| System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint |
23212404
| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint |
23222405
| System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint |
@@ -2329,6 +2412,24 @@
23292412
| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint |
23302413
| System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint |
23312414
| System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint |
2415+
| System.Xml;XmlSignificantWhitespace;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2416+
| System.Xml;XmlSignificantWhitespace;false;get_Name;();;Argument[-1];ReturnValue;taint |
2417+
| System.Xml;XmlSignificantWhitespace;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2418+
| System.Xml;XmlSignificantWhitespace;false;get_ParentNode;();;Argument[-1];ReturnValue;taint |
2419+
| System.Xml;XmlSignificantWhitespace;false;get_PreviousText;();;Argument[-1];ReturnValue;taint |
2420+
| System.Xml;XmlSignificantWhitespace;false;get_Value;();;Argument[-1];ReturnValue;taint |
2421+
| System.Xml;XmlText;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2422+
| System.Xml;XmlText;false;get_Name;();;Argument[-1];ReturnValue;taint |
2423+
| System.Xml;XmlText;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2424+
| System.Xml;XmlText;false;get_ParentNode;();;Argument[-1];ReturnValue;taint |
2425+
| System.Xml;XmlText;false;get_PreviousText;();;Argument[-1];ReturnValue;taint |
2426+
| System.Xml;XmlText;false;get_Value;();;Argument[-1];ReturnValue;taint |
2427+
| System.Xml;XmlWhitespace;false;get_LocalName;();;Argument[-1];ReturnValue;taint |
2428+
| System.Xml;XmlWhitespace;false;get_Name;();;Argument[-1];ReturnValue;taint |
2429+
| System.Xml;XmlWhitespace;false;get_NodeType;();;Argument[-1];ReturnValue;taint |
2430+
| System.Xml;XmlWhitespace;false;get_ParentNode;();;Argument[-1];ReturnValue;taint |
2431+
| System.Xml;XmlWhitespace;false;get_PreviousText;();;Argument[-1];ReturnValue;taint |
2432+
| System.Xml;XmlWhitespace;false;get_Value;();;Argument[-1];ReturnValue;taint |
23322433
| System;Array;false;Add;(System.Object);;Argument[0];Element of Argument[-1];value |
23332434
| System;Array;false;AsReadOnly<>;(T[]);;Element of Argument[0];Element of ReturnValue;value |
23342435
| System;Array;false;Clone;();;Element of Argument[0];Element of ReturnValue;value |

0 commit comments

Comments
 (0)