Invocare 'malloc()' all'interno del corpo di un ciclo 'while' o 'for' riassegnando la stessa variabile puntatore a ogni iterazione sovrascrive il puntatore precedente prima di liberarlo, esaurendo rapidamente tutta la RAM disponibile.
LEAK_IN_LOOP
→
Quando un buffer locale contenente password o chiavi crittografiche viene azzerato con 'memset(buf, 0, len)' subito prima dell'uscita dalla funzione, il compilatore rileva che 'buf' non verrà più letto ed elimina la chiamata; occorre usare 'explicit_bzero()' o 'memset_s()'.
MEMSET_OPTIMIZED_AWAY
→
Dichiarare un puntatore 'int *p;' senza assegnargli NULL o un indirizzo valido fa sì che contenga dati casuali presenti nello stack; dereferenziarlo ('*p = 10') sovrascrive porzioni arbitrarie di memoria causando crash immediato.
WILD_POINTER
→
Il meccanismo di protezione del compilatore (-fstack-protector) rileva che la scrittura su un array locale nello stack (es. tramite strcpy, gets o sprintf non protette) ha sovrascritto il valore canary e l'indirizzo di ritorno.
STACK_SMASHING_DETECTED
→
La funzione 'aligned_alloc(alignment, size)' introdotta in C11 impone che il parametro 'alignment' sia una potenza di due valida e che 'size' sia un multiplo intero esatto dell'allineamento richiesto.
ALIGNED_ALLOC_INVALID
→
Se la variabile utilizzata per stabilire la dimensione di un VLA assume valore 0 o negativo a runtime, la dichiarazione costituisce comportamento indefinito secondo lo standard C99/C11 e scatena crash immediati dello stack pointer.
VLA_ZERO_SIZE
→
Si verifica su architetture con requisiti rigidi di allineamento (es. ARM o SPARC) quando si tenta di leggere un tipo a 32/64 bit da un indirizzo non multiplo della sua dimensione, oppure accedendo oltre i limiti di un file mappato con mmap.
SIGBUS_UNALIGNED
→
La funzione free() della glibc rileva che un blocco di memoria allocato con malloc viene rilasciato per la seconda volta, interrompendo il processo per prevenire corruzioni dell'heap ed exploit di sicurezza.
DOUBLE_FREE_ABORT
→