Weaknesses of type CWE-1341

8 results

Liberação múltipla do mesmo recurso ou handle

Ocorre quando o código libera (fecha, desaloca ou libera) o mesmo recurso duas ou mais vezes. Isso causa corrupção de memória, travamentos ou comportamentos indefinidos, pois após a primeira liberação o recurso não existe mais e uma segunda tentativa opera sobre um ponteiro/handle inválido.

Example

Um arquivo é aberto, processado e fechado corretamente em um bloco try, mas o bloco finally (ou um handler de erro) tenta fechar o mesmo arquivo novamente. Na segunda tentativa, o sistema tenta fechar um descriptor inválido, causando exceção ou corrupção do estado interno.

How to mitigate

Use padrões de gerenciamento de recursos (try-with-resources em Java, context managers em Python, RAII em C++) que garantem liberação única. Implemente flags de controle (marcar recurso como 'já liberado') ou estruturas que rastreiam o estado do handle antes de tentar liberar novamente.