Fallos del tipo CWE-467

4 resultados

Uso de sizeof() em tipo ponteiro

Ocorre quando o desenvolvedor usa sizeof() em um ponteiro em vez de no tipo ou estrutura que o ponteiro aponta. O resultado é o tamanho do ponteiro (tipicamente 4 ou 8 bytes), não o tamanho da memória alocada, causando cópias de memória incompletas, corrupção de dados ou leitura além dos limites.

Ejemplo

Um código aloca um array de inteiros com malloc() e depois copia dados usando memcpy(dest, src, sizeof(ptr)) em vez de sizeof(array) ou sizeof(int) * tamanho. O memcpy copia apenas 4-8 bytes em vez de toda a estrutura esperada, deixando lixo ou causando crash.

Cómo mitigar

Sempre aplique sizeof() ao tipo ou variável derreferenciada, nunca ao ponteiro: use sizeof(*ptr) ou sizeof(tipo). Considere usar ferramentas estáticas (lint, compilador com warnings) para detectar este padrão e revise manualmente alocações de memória durante code review.