Falhas do tipo CWE-588

3 resultados

Acesso a membro de ponteiro não-estruturado

Ocorre quando o código tenta acessar um membro (campo) de um ponteiro que não aponta para uma estrutura, classe ou tipo de dados que possua esse membro. Isso causa comportamento indefinido: corrupção de memória, travamento ou execução de código arbitrário, pois o programa lê/escreve em endereços inválidos.

Exemplo

Um programa recebe um ponteiro genérico (void*) de uma função externa e tenta acessar diretamente `ptr->campo` sem verificar se ptr realmente aponta para uma estrutura que tem esse campo. Ou um cast incorreto de um ponteiro de inteiro para estrutura, depois tentando acessar seus membros.

Como mitigar

Valide o tipo do ponteiro antes de acessar membros (use type checking ou tagged unions). Evite ponteiros genéricos sem documentação clara; se necessário, use wrappers que garantem o tipo. Em C++, prefira templates ou herança polimórfica; em C, mantenha rastreamento explícito do tipo real de cada ponteiro genérico.