Fallos del tipo CWE-1341
8 resultadosLiberação múltipla do mesmo recurso ou handle
Ocorre quando o código libera (fecha, desaloca ou liberta) o mesmo recurso duas ou mais vezes. A primeira liberação é válida; as subsequentes tentam liberar algo que já não existe, causando corrupção de memória, crashes ou comportamentos impredíveis. É comum em tratamento de erros ou caminhos de execução complexos onde o recurso é liberado mais de uma vez.
Um arquivo é aberto, processado e fechado em uma função. Se uma exceção ocorre durante o processamento e o código chama close() no bloco de tratamento de erro, mas depois chama close() novamente no bloco finally, o segundo close() tenta liberar um handle já inválido, causando undefined behavior.
Use padrões como try-with-resources (Java), context managers (Python) ou RAII (C++) para garantir que recursos sejam liberados automaticamente uma única vez. Evite liberar manualmente em múltiplos pontos; centralize a limpeza em um único local ou use construções que garantem execução única.