@@ -50,8 +50,7 @@ module XML {
5050
5151 override predicate resolvesEntities ( EntityKind kind ) {
5252 // internal entities are always resolved
53- kind = InternalEntity ( )
54- or
53+ not kind = InternalEntity ( ) and
5554 // other entities are only resolved if the configuration option `noent` is set to `true`
5655 exists ( JS:: Expr noent |
5756 this .hasOptionArgument ( 1 , "noent" , noent ) and
@@ -126,8 +125,9 @@ module XML {
126125 override JS:: Expr getSourceArgument ( ) { result = this .getArgument ( 0 ) }
127126
128127 override predicate resolvesEntities ( EntityKind kind ) {
129- // entities are resolved by default
130- any ( )
128+ // SAX parsers in libxmljs also inherit libxml2's protection against XML bombs
129+ kind = ExternalEntity ( _) or
130+ kind = ParameterEntity ( true )
131131 }
132132
133133 override DataFlow:: Node getAResult ( ) {
@@ -149,8 +149,9 @@ module XML {
149149 override JS:: Expr getSourceArgument ( ) { result = this .getArgument ( 0 ) }
150150
151151 override predicate resolvesEntities ( EntityKind kind ) {
152- // entities are resolved by default
153- any ( )
152+ // SAX push parsers in libxmljs also inherit libxml2's protection against XML bombs
153+ kind = ExternalEntity ( _) or
154+ kind = ParameterEntity ( true )
154155 }
155156
156157 override DataFlow:: Node getAResult ( ) {
0 commit comments