mirror of
https://github.com/github/codeql.git
synced 2025-12-21 03:06:31 +01:00
C++: Support custom range expression modeling for variable accesses
This commit is contained in:
@@ -720,7 +720,9 @@ private float getLowerBoundsImpl(Expr expr) {
|
|||||||
or
|
or
|
||||||
// Use SSA to get the lower bounds for a variable use.
|
// Use SSA to get the lower bounds for a variable use.
|
||||||
exists(RangeSsaDefinition def, StackVariable v | expr = def.getAUse(v) |
|
exists(RangeSsaDefinition def, StackVariable v | expr = def.getAUse(v) |
|
||||||
result = getDefLowerBounds(def, v)
|
result = getDefLowerBounds(def, v) and
|
||||||
|
// Not explicitly modeled by a RangeAnalysisExpr
|
||||||
|
not expr instanceof RangeAnalysisExpr
|
||||||
)
|
)
|
||||||
or
|
or
|
||||||
// unsigned `&` (tighter bounds may exist)
|
// unsigned `&` (tighter bounds may exist)
|
||||||
@@ -893,7 +895,9 @@ private float getUpperBoundsImpl(Expr expr) {
|
|||||||
or
|
or
|
||||||
// Use SSA to get the upper bounds for a variable use.
|
// Use SSA to get the upper bounds for a variable use.
|
||||||
exists(RangeSsaDefinition def, StackVariable v | expr = def.getAUse(v) |
|
exists(RangeSsaDefinition def, StackVariable v | expr = def.getAUse(v) |
|
||||||
result = getDefUpperBounds(def, v)
|
result = getDefUpperBounds(def, v) and
|
||||||
|
// Not explicitly modeled by a RangeAnalysisExpr
|
||||||
|
not expr instanceof RangeAnalysisExpr
|
||||||
)
|
)
|
||||||
or
|
or
|
||||||
// unsigned `&` (tighter bounds may exist)
|
// unsigned `&` (tighter bounds may exist)
|
||||||
|
|||||||
Reference in New Issue
Block a user