Dans les builds Android 17 de septembre 2026, wcscspn() et wcspbrk() traitent chaque wchar_t >= 0x100 comme une correspondance lorsque l'ensemble de rejet contient deux caractères ou plus, tous inférieurs à U+0100. Cela casse le scan des chaînes larges avec des délimiteurs ASCII comme les retours à la ligne dès que le texte contient des emoji, des caractères CJK, cyrilliques, grecs ou latins étendus.
Le bug provient d'une implémentation utilisant une table de recherche de 256 octets qui arrête le scan dès qu'elle rencontre un caractère au-delà de U+00FF, le signalant à tort comme une correspondance. Les appareils équipés des builds de septembre 2026 sont concernés, dont les Pixel 7 et Pixel 8a, tandis que le Nothing Phone 2 sous Android 16 n'est pas touché. La régression a été introduite entre les sources publiques Android de juin 2026 et les builds de septembre.
Le problème touche des applications réelles comme Visual Pinball, où des emoji dans les commentaires VBScript amènent l'analyseur lexical à mal identifier les fins de ligne, et où la gestion des chemins de fichiers traite les caractères >= U+0100 comme des motifs génériques. Un cas de test tel que EXPECT_EQ(3u, wcscspn(L"a\u0100b\n", L"x\n")) permettrait d'exposer le défaut. Les sources publiques Android de juin 2026 compilent des wcscspn/wcspbrk corrects à partir de external/llvm-libc, ce qui confirme que la régression est apparue dans la mise à jour libc.so de septembre.
Source: Hacker News · Résumé par HeadlinesBriefing