/// Return statements in functions returning bool should use /// true/false instead of 1/0. // // Confidence: High // Options: --no-includes --include-headers virtual patch virtual report virtual context @r1 depends on patch@ identifier fn; typedef bool; symbol false; symbol true; @@ bool fn ( ... ) { <... return ( - 0 + false | - 1 + true ) ; ...> } @r2 depends on report || context@ identifier fn; position p; @@ bool fn ( ... ) { <... return ( * 0@p | * 1@p ) ; ...> } @script:python depends on report@ p << r2.p; fn << r2.fn; @@ msg = "WARNING: return of 0/1 in function '%s' with return type bool" % fn coccilib.report.print_report(p[0], msg)