Falhas do tipo CWE-763

47 resultados

Liberação de ponteiro ou referência inválido

Ocorre quando o código tenta liberar (desalocar) memória usando um ponteiro que não aponta para uma alocação válida — pode ser um ponteiro nulo, já liberado, ou que nunca foi alocado. Isso causa corrupção de memória, crash da aplicação ou comportamento imprevisível.

Exemplo

Um programa aloca memória para uma estrutura, mas por erro de lógica libera o mesmo bloco duas vezes (double-free), ou tenta liberar um ponteiro local da stack. Na segunda liberação, o gerenciador de memória detecta corrupção ou o ponteiro referencia dado já reescrito.

Como mitigar

Sempre validar que o ponteiro é válido antes de liberar (nunca assume que é safe); use padrões como RAII ou smart pointers (em C++); defina ponteiros como nullptr após free; revise fluxos de alocação/desalocação com ferramentas de análise estática (como Clang Static Analyzer ou Valgrind).