C and C++ Binaries


ALLOC.DF : Double Free

Summary

Two attempts to free the same dynamic object.

Properties

Class Name Double Free
Significance security
Mnemonic ALLOC.DF
Categories
MisraC2023 MisraC2023:D.4.1 Run-time failures shall be minimized
Misra2012 Misra2012:D.4.1 Run-time failures shall be minimized
CWE CWE:415 Double Free
  CWE:763 Release of Invalid Pointer or Reference
TS17961 TS17961:5.22-dblfree 5.22. Freeing memory multiple times
CERT-C CERT-C:MEM00-C Allocate and free memory in the same module, at the same level of abstraction
  CERT-C:MEM01-C Store a new value in pointers immediately after free()
CERT-CPP CERT-CPP:MEM51-CPP Properly deallocate dynamically allocated resources
  CERT-CPP:OOP54-CPP Gracefully handle self-copy assignment
JSF++ JSF++:81 The assignment operator shall handle self-assignment correctly.
Availability Available for C and C++.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="Double Free"

Triggering Functions

Double Free warnings can be triggered by any function treated as a deallocator by CodeSonar:

Example

#include <stdlib.h>

void double_free(void){
    char *p = malloc(10);
    if (!p){
      return;
    }
    char *q = p;                                /* aliasing is taken into account */
    free(p);
    free(q);  /* 'Double Free' warning issued here */
}

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.