Falhas do tipo CWE-463

3 resultados

Exclusão acidental de marcador de fim de estrutura de dados

Ocorre quando o código deleta ou sobrescreve um valor sentinela (marcador) que indica o fim de uma estrutura de dados, como um caractere nulo em strings C ou um valor especial em listas. Sem o sentinela, loops de leitura não sabem onde parar e continuam acessando memória além do limite, causando vazamento de dados ou crash.

Exemplo

Uma função copia uma string para um buffer e depois zera o último byte por engano, removendo o '\0' que marca o fim. Quando outra função tenta processar essa string, o strlen() ou um loop baseado em nulo lê memória arbitrária até encontrar um zero aleatório na heap.

Como mitigar

Sempre preserve sentinelas de estruturas de dados — valide e proteja marcadores de fim antes de qualquer operação de cópia ou limpeza. Use funções seguras (strncpy, snprintf com limite explícito) e testes unitários que verifiquem integridade de delimitadores.