Weaknesses of type CWE-1102

1 result

Dependência de Representação de Dados Específica da Máquina

É quando o código assume características de como os dados são representados na memória (tamanho de tipos, alinhamento, ordem de bytes) sem verificar ou abstrair essas diferenças. Ao migrar entre arquiteturas (x86 para ARM, 32 para 64 bits, ou entre endianness), o código quebra silenciosamente porque as suposições não valem mais.

Example

Um programa lê um inteiro diretamente de um arquivo binário usando sizeof(int) para calcular posição, ou casta um ponteiro para long e faz aritmética. Em máquinas diferentes, int pode ter tamanho distinto ou a ordem dos bytes está invertida, resultando em corrupção de dados ou comportamento indefinido.

How to mitigate

Use tipos de tamanho fixo (uint32_t, int64_t) ao invés de int/long, serialize dados com formatos padronizados (protobuf, msgpack), e teste o código em múltiplas arquiteturas. Evite casts de ponteiros para inteiros e assumpções sobre alinhamento de memória.