Skip to content

Commit 5ceab40

Browse files
authored
Update DivideByZeroUsingReturnValue.ql
1 parent 0fb1ded commit 5ceab40

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

cpp/ql/src/experimental/Security/CWE/CWE-369/DivideByZeroUsingReturnValue.ql

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ where
218218
changeInt = 0
219219
or
220220
// Denominator can be sum or difference.
221-
changeInt = getValueOperand(div.getRV(), findVal.getAnExpr(), _) and
221+
pragma[only_bind_into](changeInt) = getValueOperand(div.getRV(), findVal.getAnExpr(), _) and
222222
mayBeReturnValue(fn, changeInt)
223223
) and
224224
exp = div and
@@ -236,6 +236,7 @@ where
236236
) and
237237
(
238238
divVal = div.getRV() and
239+
divFc.getArgument(posArg) != findVal.getAnExpr() and
239240
(
240241
// Function return value can be zero.
241242
mayBeReturnZero(fn) and
@@ -245,13 +246,14 @@ where
245246
changeInt2 = 0
246247
or
247248
// Denominator can be sum or difference.
248-
changeInt = getValueOperand(divFc.getArgument(posArg), findVal.getAnExpr(), _) and
249+
pragma[only_bind_into](changeInt) =
250+
getValueOperand(divFc.getArgument(posArg), findVal.getAnExpr(), _) and
249251
mayBeReturnValue(fn, changeInt) and
250252
changeInt2 = 0
251253
)
252254
or
253255
// Look for a situation where the difference or subtraction is considered as an argument, and it can be used in the same way.
254-
changeInt = getValueOperand(div.getRV(), divVal, _) and
256+
pragma[only_bind_into](changeInt) = getValueOperand(div.getRV(), divVal, _) and
255257
changeInt2 = changeInt and
256258
mayBeReturnValue(fn, changeInt) and
257259
divFc.getArgument(posArg) = findVal.getAnExpr()

0 commit comments

Comments
 (0)