Софт
В Android 17 нашли ошибку в wcscspn() и wcspbrk() при работе с символами выше U+0100
В сентябрьских сборках Android 17 функции wcscspn() и wcspbrk() в bionic принимают любой символ с кодом от U+0100 за совпадение, даже если его нет в наборе.
Об ошибке сообщили в трекере bionic. По описанию, она проявляется в сборках за сентябрь 2026 года (CP3A.260905.009), когда набор отбрасываемых символов содержит два и более символа с кодами ниже U+0100. Код, который ищет в широких строках ASCII-разделители, ломается при появлении эмодзи, CJK, кириллицы, греческих и расширенных латинских символов. В публичных исходниках android-17.0.0_r1 за июнь код другой и работает верно, значит, регрессия появилась между июньским и сентябрьским выпусками.
Автор отчёта по дизассемблированию libc.so показал, что при сканировании по таблице цикл останавливается на символе ≥ 0x100. Для wcsspn такое поведение корректно, поэтому он не затронут. Реальный пример: Visual Pinball на Android перестал загружать столы, в VBScript-комментариях которых есть эмодзи. Разработчики обошли проблему, заменив вызовы обычными циклами.
Сопровождающий проекта подтвердил, что ошибка воспроизводится и в актуальной ветке, добавит недостающие тесты и попробует организовать бэкпорт исправления. Он также заметил, что публичные исходники android-latest-release отстают от актуальных, поэтому изменения за апрель там пока не видны.
- Затронуты сборки Android 17 за сентябрь 2026 (CP3A.260905.009)
- Некорректны wcscspn() и wcspbrk(), wcsspn() работает верно
- Исправление планируют бэкпортировать
Источники
- Hacker News: AOSP Source Releases Are So Late Developers Disassemble Libraries to Report Bugs · 14 октября 2026, 09:18
Текст подготовлен автоматически по материалам источников и может содержать неточности.