File tree Expand file tree Collapse file tree 1 file changed +9
-1
lines changed
cpp/ql/src/experimental/Security/CWE/CWE-266 Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Original file line number Diff line number Diff line change 53
53
fctmp .getTarget ( ) .hasGlobalOrStdName ( "fopen" ) or
54
54
fctmp .getTarget ( ) .hasGlobalOrStdName ( "open" )
55
55
) and
56
- not fctmp .getArgument ( 1 ) .getValue ( ) .matches ( "r%" ) and
56
+ (
57
+ fctmp .getArgument ( 1 ) .getValue ( ) .matches ( "%a%" ) or
58
+ fctmp .getArgument ( 1 ) .getValue ( ) .matches ( "%w%" ) or
59
+ // unfortunately cannot use numeric value here because // O_CREAT is defined differently on different OSes:
60
+ // https://github.com/red/red/blob/92feb0c0d5f91e087ab35fface6906afbf99b603/runtime/definitions.reds#L477-L491
61
+ // this may introduce false negatives
62
+ fctmp .getArgument ( 1 ) .( BitwiseOrExpr ) .getAChild * ( ) .getValueText ( ) .matches ( "O_CREAT" ) or
63
+ fctmp .getArgument ( 1 ) .getValueText ( ) .matches ( "%O_CREAT%" )
64
+ ) and
57
65
fctmp .getNumberOfArguments ( ) = 2 and
58
66
not fctmp .getArgument ( 0 ) .getValue ( ) = "/dev/null" and
59
67
fcsnd = fctmp
You can’t perform that action at this time.
0 commit comments