Skip to content

Commit 6fc5ff5

Browse files
committed
CPP: Speed up getBufferSize.
1 parent 68dae60 commit 6fc5ff5

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

cpp/ql/src/semmle/code/cpp/commons/Buffer.qll

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,19 +81,21 @@ int getBufferSize(Expr bufferExpr, Element why) {
8181
// buffer is a fixed size dynamic allocation
8282
isFixedSizeAllocationExpr(bufferExpr, result) and
8383
why = bufferExpr
84-
) or (
84+
) or exists(DataFlow::ExprNode bufferExprNode |
8585
// dataflow (all sources must be the same size)
86+
bufferExprNode = DataFlow::exprNode(bufferExpr) and
87+
8688
result = min(Expr def |
87-
DataFlow::localFlowStep(DataFlow::exprNode(def), DataFlow::exprNode(bufferExpr)) |
89+
DataFlow::localFlowStep(DataFlow::exprNode(def), bufferExprNode) |
8890
getBufferSize(def, _)
8991
) and result = max(Expr def |
90-
DataFlow::localFlowStep(DataFlow::exprNode(def), DataFlow::exprNode(bufferExpr)) |
92+
DataFlow::localFlowStep(DataFlow::exprNode(def), bufferExprNode) |
9193
getBufferSize(def, _)
9294
) and
9395

9496
// find reason
9597
exists(Expr def |
96-
DataFlow::localFlowStep(DataFlow::exprNode(def), DataFlow::exprNode(bufferExpr)) |
98+
DataFlow::localFlowStep(DataFlow::exprNode(def), bufferExprNode) |
9799
why = def or
98100
exists(getBufferSize(def, why))
99101
)

0 commit comments

Comments
 (0)