Files
codeql/python/ql/lib/semmle/python/regex.qll
2024-09-03 20:30:58 +02:00

17 lines
695 B
Plaintext

import python
// Need to import since frameworks can extend the abstract `RegExpInterpretation::Range`
private import semmle.python.Frameworks
private import regexp.internal.RegExpTracking as RegExpTracking
private import semmle.python.Concepts as Concepts
private import semmle.python.regexp.RegexTreeView
private import semmle.python.dataflow.new.DataFlow
import regexp.internal.ParseRegExp
/** Gets a parsed regular expression term that is executed at `exec`. */
RegExpTerm getTermForExecution(Concepts::RegexExecution exec) {
exists(DataFlow::Node source | source = RegExpTracking::regExpSource(exec.getRegex()) |
result.getRegex() = source.asExpr() and
result.isRootTerm()
)
}