Fallos del tipo CWE-188

2 resultados

Dependência de layout de dados/memória

O código assume uma organização específica de dados ou estruturas na memória, sem validar ou documentar essa premissa. Quando o compilador, sistema operacional ou arquitetura muda, o layout real pode ser diferente, causando corrupção de dados, leitura errada de valores ou comportamentos impredizíveis.

Ejemplo

Um código que serializa uma struct C diretamente para arquivo lendo a memória byte a byte, assumindo que os campos estão contíguos e sem padding. Ao portar para outra arquitetura ou versão do compilador com alinhamento diferente, os dados são desserializados incorretamente.

Cómo mitigar

Use mecanismos agnósticos de serialização (JSON, protobuf, etc.) ou declare explicitamente alinhamento e padding com diretivas do compilador (pragma pack, __attribute__((aligned))). Valide o layout em tempo de compilação com static_assert ou em tempo de execução antes de operações críticas.