IFFree is a tool aimed at seeking interferences in C code. Interferences are interactions between modules of different privilege levels. These levels correspond to safety levels of critical software, depending on the domain: ASIL for the automotive domain, DAL for avionics, SIL for the railway domain, etc.
The interactions searched by IFFree are:
- Execution requests upon an API
- Assignments. They cover the writing of higher-level variables, the reading of variables or values coming from lesser-privileged modules, etc
- The escaping of adresses coming from protected modules
In order to realize theses analyses, IFFree inlines the code so as to obtain the best possible granularity and precision possible. For instance, if a dangerous value is passed as a parameter through many function calls for being only used deep in the callgraph, IFFree shall point directly the location where this value is used.
IFFree can be used on industrial embedded C source codes of realistic size. For instance, it was used for analyzing an automotive embedded C code of about 750 kLoC.