Skip to content

Commit 7974e3a

Browse files
authored
Merge pull request #5883 from zbazztian/consider-boxed-booleans-to-avoid-xxe-fps
Consider boxed booleans to avoid false positives for XXE.ql
2 parents 8f152b7 + b05512a commit 7974e3a

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
lgtm,codescanning
2+
* The query "Resolving XML external entity in user-controlled data" (`java/xxe`) has been improved to report fewer false positives when a Builder / Factory (e.g. an `XMLInputFactory`) is configured safely by using a boxed boolean as second argument to one or more of its configuration methods.

java/ql/src/semmle/code/java/security/XmlParsers.qll

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,21 @@ abstract class ParserConfig extends MethodAccess {
3636
*/
3737
predicate disables(Expr e) {
3838
this.getArgument(0) = e and
39-
this.getArgument(1).(BooleanLiteral).getBooleanValue() = false
39+
(
40+
this.getArgument(1).(BooleanLiteral).getBooleanValue() = false or
41+
this.getArgument(1).(FieldAccess).getField().hasQualifiedName("java.lang", "Boolean", "FALSE")
42+
)
4043
}
4144

4245
/**
4346
* Holds if the method enables a property.
4447
*/
4548
predicate enables(Expr e) {
4649
this.getArgument(0) = e and
47-
this.getArgument(1).(BooleanLiteral).getBooleanValue() = true
50+
(
51+
this.getArgument(1).(BooleanLiteral).getBooleanValue() = true or
52+
this.getArgument(1).(FieldAccess).getField().hasQualifiedName("java.lang", "Boolean", "TRUE")
53+
)
4854
}
4955
}
5056

0 commit comments

Comments
 (0)