Finish modeling

This commit is contained in:
jorgectf
2021-07-22 19:34:23 +02:00
parent b5e10b6c42
commit 068150b1ab
2 changed files with 30 additions and 28 deletions

View File

@@ -76,7 +76,7 @@ private module XML {
private class LXMLParsing extends DataFlow::CallCfgNode, XMLParsing::Range {
LXMLParsing() {
this = lxmlEtree().getMember(["fromstring", "fromstringlist", "XML"]).getACall()
this = lxmlEtree().getMember(["fromstring", "fromstringlist", "XML", "parse"]).getACall()
}
override DataFlow::Node getAnInput() { result = this.getArg(0) }
@@ -87,4 +87,31 @@ private module XML {
)
}
}
private API::Node xmltodict() { result = API::moduleImport("xmltodict") }
private class XMLtoDictParsing extends DataFlow::CallCfgNode, XMLParsing::Range {
XMLtoDictParsing() { this = xmltodict().getMember("parse").getACall() }
override DataFlow::Node getAnInput() { result = this.getArg(0) }
override predicate mayBeDangerous() {
DataFlow::localFlow(DataFlow::exprNode(any(False falseName)),
this.getArgByName("disable_entities"))
}
}
private API::Node xmlDom() { result = xml().getMember("dom").getMember(["mini", "pull"] + "dom") }
private class XMLDomParsing extends DataFlow::CallCfgNode, XMLParsing::Range {
XMLDomParsing() { this = xmlDom().getMember("parse").getACall() }
override DataFlow::Node getAnInput() { result = this.getArg(0) }
override predicate mayBeDangerous() {
exists(XMLParser xmlParser |
xmlParser.mayBeDangerous() and this.getArgByName("parser").getALocalSource() = xmlParser
)
}
}
}