@@ -49,9 +49,7 @@ module XML {
4949 override JS:: Expr getSourceArgument ( ) { result = this .getArgument ( 0 ) }
5050
5151 override predicate resolvesEntities ( EntityKind kind ) {
52- // internal entities are always resolved
53- kind = InternalEntity ( )
54- or
52+ not kind = InternalEntity ( ) and
5553 // other entities are only resolved if the configuration option `noent` is set to `true`
5654 exists ( JS:: Expr noent |
5755 this .hasOptionArgument ( 1 , "noent" , noent ) and
@@ -126,8 +124,9 @@ module XML {
126124 override JS:: Expr getSourceArgument ( ) { result = this .getArgument ( 0 ) }
127125
128126 override predicate resolvesEntities ( EntityKind kind ) {
129- // entities are resolved by default
130- any ( )
127+ // SAX parsers in libxmljs also inherit libxml2's protection against XML bombs
128+ kind = ExternalEntity ( _) or
129+ kind = ParameterEntity ( true )
131130 }
132131
133132 override DataFlow:: Node getAResult ( ) {
@@ -149,8 +148,9 @@ module XML {
149148 override JS:: Expr getSourceArgument ( ) { result = this .getArgument ( 0 ) }
150149
151150 override predicate resolvesEntities ( EntityKind kind ) {
152- // entities are resolved by default
153- any ( )
151+ // SAX push parsers in libxmljs also inherit libxml2's protection against XML bombs
152+ kind = ExternalEntity ( _) or
153+ kind = ParameterEntity ( true )
154154 }
155155
156156 override DataFlow:: Node getAResult ( ) {
0 commit comments