Traditional Static Allocation Policy (DYN02)
Level \(\rightarrow\) Advisory
- Category
- Safety:
\(\checkmark\)
- Cyber:
\(\checkmark\)
- Goal
- Maintainability:
\(\checkmark\)
- Reliability:
\(\checkmark\)
- Portability:
- Performance:
- Security:
\(\checkmark\)
Remediation \(\rightarrow\) Low
Verification Method \(\rightarrow\) Compiler restrictions
Reference
MISRA C Dir 4.12: "Dynamic memory allocation shall not be used."
Description
The following restrictions must be in effect:
No_Allocators
No_Task_Allocators
Under the traditional approach, no dynamic allocations and no deallocations occur. Only declared objects are used and no access types of any kind appear in the code.
Without allocations there is no issue with deallocation as there would be nothing to deallocate. Heap storage exhaustion and fragmentation are clearly prevented although storage may still be exhausted due to insufficient stack size allotments.
In this approach the following constructs are not allowed:
Allocators
Access-to-constant access types
Access-to-variable access types
User-defined storage pools
Unchecked Deallocations
Applicable Vulnerability within ISO TR 24772-2
4.10 Storage Pool
Applicable Common Weakness Enumeration
Noncompliant Code Example
Any code using the constructs listed above.
Compliant Code Example
N/A
Notes
The compiler, and/or GNATcheck, will detect violations of the restrictions.