Skip to content

Commit 4f00229

Browse files
committed
CPP: Add exception for builtins.
1 parent 7a877bf commit 4f00229

File tree

1 file changed

+26
-20
lines changed

1 file changed

+26
-20
lines changed

cpp/ql/src/Likely Bugs/Conversion/LossyFunctionResultCast.ql

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,31 @@
1111

1212
import cpp
1313

14-
predicate whitelist(string fName) {
15-
fName = "ceil" or
16-
fName = "ceilf" or
17-
fName = "ceill" or
18-
fName = "floor" or
19-
fName = "floorf" or
20-
fName = "floorl" or
21-
fName = "nearbyint" or
22-
fName = "nearbyintf" or
23-
fName = "nearbyintl" or
24-
fName = "rint" or
25-
fName = "rintf" or
26-
fName = "rintl" or
27-
fName = "round" or
28-
fName = "roundf" or
29-
fName = "roundl" or
30-
fName = "trunc" or
31-
fName = "truncf" or
32-
fName = "truncl"
14+
predicate whitelist(Function f) {
15+
exists(string fName |
16+
fName = f.getName() and
17+
(
18+
fName = "ceil" or
19+
fName = "ceilf" or
20+
fName = "ceill" or
21+
fName = "floor" or
22+
fName = "floorf" or
23+
fName = "floorl" or
24+
fName = "nearbyint" or
25+
fName = "nearbyintf" or
26+
fName = "nearbyintl" or
27+
fName = "rint" or
28+
fName = "rintf" or
29+
fName = "rintl" or
30+
fName = "round" or
31+
fName = "roundf" or
32+
fName = "roundl" or
33+
fName = "trunc" or
34+
fName = "truncf" or
35+
fName = "truncl" or
36+
fName.matches("__builtin_%")
37+
)
38+
)
3339
}
3440

3541
predicate whitelistPow(FunctionCall fc) {
@@ -44,7 +50,7 @@ predicate whitelistPow(FunctionCall fc) {
4450
}
4551

4652
predicate whiteListWrapped(FunctionCall fc) {
47-
whitelist(fc.getTarget().getName()) or
53+
whitelist(fc.getTarget()) or
4854
whitelistPow(fc) or
4955
exists(ReturnStmt rs |
5056
rs.getEnclosingFunction() = fc.getTarget() and

0 commit comments

Comments
 (0)