Skip to content

Commit 6645b08

Browse files
committed
step 1.3
1 parent e6e2b67 commit 6645b08

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

codeql-custom-queries-java/ctf4.ql

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -168,24 +168,32 @@ class TypeConstraintValidatorContext extends RefType {
168168
}
169169
}
170170

171-
predicate isSource(DataFlow::Node source) {
172-
/* TODO describe source */
173-
//source.asExpr() instanceof StringLiteral
174-
//source = ConstraintValidator.getParameter(0)
175-
//source instanceof RemoteFlowSource
176-
//ConstraintValidator = source.asExpr().hasQualifiedName("javax.validation", "ConstraintValidator")
171+
class MyTaintTrackingConfig extends TaintTracking::Configuration {
172+
MyTaintTrackingConfig() { this = "MyTaintTrackingConfig" }
177173

178-
source instanceof BeanValidationSource
179-
}
174+
override predicate isSource(DataFlow::Node source) {
175+
/* TODO describe source */
176+
//source.asExpr() instanceof StringLiteral
177+
//source = ConstraintValidator.getParameter(0)
178+
//source instanceof RemoteFlowSource
179+
//ConstraintValidator = source.asExpr().hasQualifiedName("javax.validation", "ConstraintValidator")
180180

181-
/* Step 1.2 */
182-
predicate isSink(DataFlow::Node sink) {
183-
exists(MethodAccess ma |
184-
ma.getMethod() instanceof BuildConstraintViolationWithTemplateMethod and
185-
sink.asExpr() = ma.getArgument(0)
186-
)
181+
source instanceof BeanValidationSource
182+
}
183+
184+
/* Step 1.2 */
185+
override predicate isSink(DataFlow::Node sink) {
186+
exists(MethodAccess ma |
187+
ma.getMethod() instanceof BuildConstraintViolationWithTemplateMethod and
188+
sink.asExpr() = ma.getArgument(0)
189+
)
190+
}
187191
}
188192

193+
from MyTaintTrackingConfig cfg, DataFlow::PathNode source, DataFlow::PathNode sink
194+
where cfg.hasFlowPath(source, sink)
195+
select sink, source, sink, "Custom constraint error message contains unsanitized user data"
196+
189197
// from Method method, MethodAccess call
190198
// where
191199
// call.getMethod() = method and

0 commit comments

Comments
 (0)