Only Reclaim Allocated Storage (RCL02)
Level \(\rightarrow\) Mandatory
- Category
- Safety:
\(\checkmark\)
- Cyber:
\(\checkmark\)
- Goal
- Maintainability:
\(\checkmark\)
- Reliability:
\(\checkmark\)
- Portability:
\(\checkmark\)
- Performance:
- Security:
\(\checkmark\)
Remediation \(\rightarrow\) High
Verification Method \(\rightarrow\) Code inspection
Reference
[SEI-C] MEM34-C: Only Free Memory Allocated Dynamically
Description
Only deallocate storage that was dynamically allocated by the evaluation of an
allocator (i.e., new
).
This is possible because Ada allows creation of access values designating declared (aliased) objects.
Applicable Vulnerability within ISO TR 24772-2
6.39 Memory leak and heap fragmentation [XYL]
Applicable Common Weakness Enumeration
Noncompliant Code Example
type String_Reference is access all String;
procedure Free is new Ada.Unchecked_Deallocation
(Object => String, Name => String_Reference);
S : aliased String := "Hello";
Y : String_Reference := S'Access;
begin
Free (Y);
Compliant Code Example
Remove the call to Free (Y)
.
Notes
Enforcement of this rule can only be provided by manual code review, unless
deallocation is forbidden via No_Unchecked_Deallocation
.