Weaknesses of type CWE-135
2 resultsCálculo incorreto do comprimento de string multibyte
Ocorre quando o código calcula o tamanho de uma string contendo caracteres multibyte (UTF-8, UTF-16, etc.) usando funções que contam bytes em vez de caracteres, ou vice-versa. Isso causa desalinhamento entre o que o desenvolvedor pensa que está processando e o que realmente acontece, levando a buffer overflows, truncamento de dados ou processamento de dados corruptos.
Uma aplicação usa strlen() em uma string UTF-8 com acentos para alocar buffer e copiar dados. strlen() retorna o número de bytes (6), mas a string tem apenas 2 caracteres acentuados. Ao tentar acessar ou validar o terceiro caractere, o código acessa além do esperado, causando corrupção ou leitura de memória ilegítima.
Use funções que trabalhem explicitamente com caracteres em vez de bytes (como mb_strlen() em PHP ou equivalentes), valide a codificação de entrada, e teste com strings contendo caracteres multibyte durante desenvolvimento e testes de segurança.