HeadlinesBriefing HeadlinesBriefing.com

Bug de caracteres largos no Android afeta emoji e CJK

Hacker News •
×

Nas builds do Android 17 de setembro de 2026, wcscspn() e wcspbrk() tratam cada wchar_t >= 0x100 como correspondência quando o conjunto de rejeição tem dois ou mais caracteres, todos menores que U+0100. Isso quebra a varredura de strings largas com delimitadores ASCII, como quebras de linha, assim que o texto contém emoji, caracteres CJK, cirílicos, gregos ou latinos estendidos.

O bug vem de uma implementação com uma tabela de consulta de 256 bytes que interrompe a varredura ao encontrar qualquer caractere acima de U+00FF e o informa incorretamente como correspondência. Dispositivos com as builds de setembro de 2026 são afetados, incluindo Pixel 7 e Pixel 8a, enquanto o Nothing Phone 2 com Android 16 não é afetado. A regressão foi introduzida entre as fontes públicas do Android de junho de 2026 e as builds de setembro.

O problema atinge aplicativos reais, como o Visual Pinball, em que emoji em comentários VBScript fazem o analisador léxico identificar incorretamente o fim das linhas, e o tratamento de caminhos de arquivos trata caracteres >= U+0100 como padrões curinga. Um caso de teste como EXPECT_EQ(3u, wcscspn(L"a\u0100b\n", L"x\n")) exporia o defeito. As fontes públicas do Android de junho de 2026 compilam wcscspn/wcspbrk corretos a partir de external/llvm-libc, o que confirma que a regressão ocorreu na atualização de setembro do libc.so.

Fonte: Hacker News · Resumido por HeadlinesBriefing