Weaknesses of type CWE-910

2 results

Uso de descritor de arquivo expirado

A fraqueza ocorre quando o código tenta usar um descritor de arquivo (file descriptor) após ele ter sido fechado ou invalidado pelo sistema operacional. Isso pode levar a comportamentos impredizíveis, corrupção de dados ou leitura/escrita em arquivo errado, porque o SO pode reatribuir o mesmo número de descritor a outro arquivo.

Example

Um processo abre um arquivo (fd=3), passa esse descritor para uma thread que o fecha, mas a thread original continua tentando escrever em fd=3 sem saber que ele foi fechado. Se o SO abrir outro arquivo, este pode receber fd=3, e a escrita vai corromper o arquivo errado.

How to mitigate

Implemente sincronização explícita entre threads antes de fechar descritores (use mutexes ou semáforos), valide se o descritor ainda é válido antes de usá-lo, e considere usar abstrações de mais alto nível (streams, wrappers) que gerenciam o ciclo de vida do recurso automaticamente.