Fallos del tipo CWE-194
5 resultadosExtensão de sinal inesperada
Ocorre quando um valor é convertido de um tipo de dado menor para um maior e o bit de sinal é estendido automaticamente, alterando o valor esperado. Em linguagens como C/C++, converter um `char` negativo para `int` sem cuidado propaga o sinal, transformando -1 em -1 (ou 0xFFFFFFFF em inteiros de 32 bits), causando comportamentos lógicos incorretos em validações, comparações ou operações aritméticas.
Um validador de tamanho de arquivo lê um byte não assinado (0xFF, representando 255 bytes) e o atribui a uma variável `char` assinado, que interpreta como -1. Uma comparação posterior `if (tamanho < 1000)` passa, embora o buffer alocado seja pequeno, levando a estouro de memória.
Use tipos explícitos e sem sinal (`unsigned char`, `uint32_t`) para valores que não devem ser negativos. Valide conversões de tipo e use análise estática ou compiladores com flags de aviso (`-Wsign-conversion`) para detectar extensões inesperadas em tempo de compilação.