These checkers enforce the CERT C Secure Coding rules. The code is available for free download by selecting 'Attachments' on this page.The source code was developed by the CERT Secure Coding Group, and is freely available.
This code has been developed and tested on an i386 workstation running Linux (2.6.16.60) and g++ (3.4.4)
This code depends on ROSE 0.9.3a, which is available for free download from:
ROSE 0.9.3a also depends on the BOOST C++ library, version 1.3.5, which is available for free download from:
First make sure that the ROSE environment variable points to the build directory of ROSE:
Code Block |
---|
export ROSE=/usr/local/rose/compileTree
|
Building Diagnose
To build the ROSE 'diagnose' program, which runs secure coding rules:
Code Block |
---|
make pgms
|
To test diagnose on the code samples from the CERT C Secure Coding Rules:
Code Block |
---|
make tests
|
To build API documentation pages, you must have doxygen installed:
Code Block |
---|
make doc
|
To clean documentation pages and build files:
Code Block |
---|
make clean
|
Running Diagnose
To run the diagnose program on a C file, simply pass the C file as an argument:
Code Block |
---|
diagnose hello.c
|
are freely available from Rosecheckers Github project. For questions regarding the CERT ROSE checkers, contact info@sei.cmu.edu.
Getting Rosecheckers code from source or container
You can get the rosecheckers code from source or a container from Rosecheckers Github project.
Follow the instructions on the Readme of that project siteIf the C file violates some secure coding rules, the diagnose program will print them out. If the diagnose program can not find any violations, it prints nothing.
Secure Coding Rules Enforced by
...
Rosecheckers
The SEI CERT C Secure Coding Rules are Standard is freely available.
Here is a breakdown of how thoroughly diagnose Rosecheckers enforces the C Secure Coding Rules and Recommendations:
Complete | 57 |
Rosecheckers catches all violations of these rules | |
Partial | 45 |
Rosecheckers catches some, but not all violations of these rules | ||
false-positive | 9 | These rules could be checked by |
Rosecheckers, but they will also catch some false positives. | ||
Potential | 29 | These rules are not checked by |
Rosecheckers, but could be | ||
Undoable | 32 | These rules could not be checked by |
Rosecheckers due to various limitations in ROSE. | ||
Unenforceable | 48 | These rules could not be checked by any tool that relies purely on unaided static analysis. |
TOTAL | 220 |