২০২৬ সালের সেপ্টেম্বরের Android 17 বিল্ডে, যখন রিজেক্ট সেটে দুই বা তার বেশি অক্ষর থাকে এবং সবগুলোই U+0100-এর চেয়ে ছোট, তখন wcscspn() ও wcspbrk() প্রতিটি wchar_t >= 0x100-কে মিল হিসেবে গণ্য করে। টেক্সটে ইমোজি, CJK, সিরিলিক, গ্রিক বা Latin Extended অক্ষর থাকলে এটি নিউলাইনের মতো ASCII ডিলিমিটারসহ ওয়াইড স্ট্রিং স্ক্যানিং ভেঙে দেয়।
এই বাগটি একটি ২৫৬-বাইটের লুকআপ টেবিল বাস্তবায়ন থেকে আসে, যা U+00FF-এর পরের যেকোনো অক্ষর পেলেই স্ক্যান বন্ধ করে দেয় এবং ভুলভাবে সেটিকে মিল হিসেবে জানায়। সেপ্টেম্বর ২০২৬-এর বিল্ড চালানো ডিভাইসগুলো প্রভাবিত, যার মধ্যে Pixel 7 ও Pixel 8a রয়েছে; তবে Android 16-এ চলা Nothing Phone 2 প্রভাবিত নয়। জুন ২০২৬-এর পাবলিক সোর্স ও সেপ্টেম্বরের বিল্ডের মাঝখানে এই রিগ্রেশন ঢুকেছে।
এটি Visual Pinball-এর মতো বাস্তব অ্যাপ্লিকেশনকে প্রভাবিত করে, যেখানে VBScript মন্তব্যে ইমোজি থাকায় লেক্সার লাইনের শেষ ভুলভাবে চিহ্নিত করে, এবং ফাইল পাথ হ্যান্ডলিংয়ে U+0100 বা তার বেশি অক্ষর ওয়াইল্ডকার্ড প্যাটার্ন হিসেবে গণ্য হয়। EXPECT_EQ(3u, wcscspn(L"a\u0100b\n", L"x\n")) এর মতো একটি টেস্ট কেস এই ত্রুটি প্রকাশ করতে পারে। জুন ২০২৬-এর Android পাবলিক সোর্স external/llvm-libc থেকে সঠিক wcscspn/wcspbrk তৈরি করে, যা নিশ্চিত করে যে রিগ্রেশনটি সেপ্টেম্বরের libc.so আপডেটে ঘটেছে।
উৎস: Hacker News · সারাংশ: HeadlinesBriefing