خلل في دالتين من libc أندرويد يجعل كل حرف عربي يُعامَل كحرف فاصل في تحديث سبتمبر
فُتح في 12 أكتوبر 2026 بلاغ على مستودع Android NDK يصف خللًا في دالتين من مكتبة libc الخاصة بأندرويد، هما wcscspn وwcspbrk. ووظيفة الدالتين البحث داخل نص عن أول حرف ينتمي إلى مجموعة حروف يحددها المبرمج.
والخلل، بحسب البلاغ، يظهر حين تضم المجموعة المطلوبة حرفين أو أكثر، وكلها تحت U+0100. عندها تتوقف الدالة عند أول حرف قيمته U+0100 أو أكثر، وتعتبره مطابقًا. وقد أظهر مسح على كامل نطاق يونيكود أن 1,111,808 من الرموز تعطي نتيجة خاطئة، من U+0100 حتى U+10FFFF.
والحروف العربية تقع بين U+0600 وU+06FF، أي داخل النطاق المصاب كله. فأي كلمة عربية توقف الدالة عند أول حرف فيها.
والأثر ليس نظريًا. فمشروع Visual Pinball مفتوح المصدر يستخدم wcspbrk لتخطي التعليقات، فصار أي تعليق فيه حرف خارج الإنجليزية يوقف تحميل الملف برسالة “Invalid character”. ويستخدمها المشروع نفسه في نقل المجلدات، فصار أي مسار فيه حرف فوق U+0100 يُعامَل كنمط بحث. وكان الحل المؤقت عندهم استبدال هذه الاستدعاءات بحلقات عادية.
والأجهزة المصابة المذكورة هي Pixel 7 وPixel 8a على بناء CP3A.260905.009، أي تحديث 5 سبتمبر 2026. أما Nothing Phone 2 على تحديث 1 أغسطس 2026 فسليم، وكذلك مصادر android-17.0.0_r1 المنشورة في يونيو 2026، لأنها مبنية من llvm-libc. ولهذا لم يستطع صاحب البلاغ التحقق من الكود المنشور، فاضطر إلى تفكيك ملف libc.so من الجهاز نفسه.
وأكد أحد المساهمين من Google في 12 أكتوبر أن الخلل موجود في أحدث نسخة من الكود، وقال إنه سيضيف الاختبارات الناقصة وسيحاول نقل الإصلاح إلى الإصدارات الحالية لتقليل عدد الأجهزة المصابة. ولم يُعلَن بعد موعد وصول الإصلاح. ويكشف البلاغ أيضًا أن اختبارًا قديمًا للدالة نفسها كان يتوقع النتيجة 2، والصحيح 3.