@@ -725,21 +725,27 @@ private class CreatedSafeXMLReaderFlowConfig extends DataFlow3::Configuration {
725
725
}
726
726
727
727
/** An `XMLReader` that is obtained from a safe source. */
728
- class CreatedSafeXMLReader extends MethodAccess {
728
+ class CreatedSafeXMLReader extends Call {
729
729
CreatedSafeXMLReader ( ) {
730
730
//Obtained from SAXParser
731
731
exists ( SafeSAXParserFlowConfig safeParser |
732
- this .getMethod ( ) .getDeclaringType ( ) instanceof SAXParser and
733
- this .getMethod ( ) .hasName ( "getXMLReader" ) and
732
+ this .( MethodAccess ) . getMethod ( ) .getDeclaringType ( ) instanceof SAXParser and
733
+ this .( MethodAccess ) . getMethod ( ) .hasName ( "getXMLReader" ) and
734
734
safeParser .hasFlowToExpr ( this .getQualifier ( ) )
735
735
)
736
736
or
737
737
//Obtained from SAXReader
738
738
exists ( SafeSAXReaderFlowConfig safeReader |
739
- this .getMethod ( ) .getDeclaringType ( ) instanceof SAXReader and
740
- this .getMethod ( ) .hasName ( "getXMLReader" ) and
739
+ this .( MethodAccess ) . getMethod ( ) .getDeclaringType ( ) instanceof SAXReader and
740
+ this .( MethodAccess ) . getMethod ( ) .hasName ( "getXMLReader" ) and
741
741
safeReader .hasFlowToExpr ( this .getQualifier ( ) )
742
742
)
743
+ or
744
+ exists ( RefType secureReader , string package |
745
+ this .( ClassInstanceExpr ) .getConstructedType ( ) = secureReader and
746
+ secureReader .hasQualifiedName ( package , "SecureJDKXercesXMLReader" ) and
747
+ package .matches ( "com.google.%common.xml.parsing" )
748
+ )
743
749
}
744
750
745
751
predicate flowsTo ( SafeXMLReaderFlowSink sink ) {
0 commit comments