Weaknesses of type CWE-762

12 results

Rotinas de Gestão de Memória Incompatíveis

Ocorre quando código aloca memória com uma função (ex: malloc) mas libera com outra incompatível (ex: delete do C++). O sistema operacional ou runtime não consegue rastrear corretamente o bloco, causando corrupção de heap, vazamentos ou crashes. É perigoso porque introduz comportamento indefinido e pode ser explorado para execução de código.

Example

Um componente aloca buffer com malloc() em C, mas outra parte do código (ou biblioteca C++) tenta liberar com delete. O alocador não reconhece o bloco, escreve em estruturas internas erradas, e o programa quebra ou vaza memória sistematicamente.

How to mitigate

Use sempre o mesmo par alocador/liberador dentro do mesmo contexto (malloc/free, new/delete, etc). Em código C++, prefira std::unique_ptr ou std::shared_ptr. Code review rigoroso em operações de memória e use ferramentas como Valgrind ou AddressSanitizer para detectar mismatches antes da produção.