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 5353 fctmp .getTarget ( ) .hasGlobalOrStdName ( "fopen" ) or
5454 fctmp .getTarget ( ) .hasGlobalOrStdName ( "open" )
5555 ) 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
5765 fctmp .getNumberOfArguments ( ) = 2 and
5866 not fctmp .getArgument ( 0 ) .getValue ( ) = "/dev/null" and
5967 fcsnd = fctmp
You can’t perform that action at this time.
0 commit comments