JS: Port barriers in UrlConcatenation.qll

This commit is contained in:
Asger F
2023-10-05 09:08:56 +02:00
parent 7a1aead831
commit 395f52303c

View File

@@ -103,8 +103,16 @@ predicate hostnameSanitizingPrefixEdge(DataFlow::Node source, DataFlow::Node sin
class HostnameSanitizerGuard extends TaintTracking::SanitizerGuardNode, StringOps::StartsWith {
HostnameSanitizerGuard() { hasHostnameSanitizingSubstring(this.getSubstring()) }
override predicate sanitizes(boolean outcome, Expr e) {
override predicate sanitizes(boolean outcome, Expr e) { this.blocksExpr(outcome, e) }
/** Holds if this node blocks flow through `e`, provided it evaluates to `outcome`. */
predicate blocksExpr(boolean outcome, Expr e) {
outcome = this.getPolarity() and
e = this.getBaseString().asExpr()
}
}
/**
* A check that sanitizes the hostname of a URL.
*/
module HostnameSanitizerGuard = DataFlow::MakeBarrierGuard<HostnameSanitizerGuard>;