mirror of
https://github.com/github/codeql.git
synced 2025-12-22 03:36:30 +01:00
JS: Port barriers in UrlConcatenation.qll
This commit is contained in:
@@ -103,8 +103,16 @@ predicate hostnameSanitizingPrefixEdge(DataFlow::Node source, DataFlow::Node sin
|
|||||||
class HostnameSanitizerGuard extends TaintTracking::SanitizerGuardNode, StringOps::StartsWith {
|
class HostnameSanitizerGuard extends TaintTracking::SanitizerGuardNode, StringOps::StartsWith {
|
||||||
HostnameSanitizerGuard() { hasHostnameSanitizingSubstring(this.getSubstring()) }
|
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
|
outcome = this.getPolarity() and
|
||||||
e = this.getBaseString().asExpr()
|
e = this.getBaseString().asExpr()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A check that sanitizes the hostname of a URL.
|
||||||
|
*/
|
||||||
|
module HostnameSanitizerGuard = DataFlow::MakeBarrierGuard<HostnameSanitizerGuard>;
|
||||||
|
|||||||
Reference in New Issue
Block a user