ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
في نواة Linux، تم حل الثغرة التالية: tracing: رفض تعبيرات تصفية الأحداث غير المكتملة. ينتهي التعبير غير الفارغ عادةً في الحلقة الداخلية للدالة predicate_parse()، والتي تحل العوامل المنطقية المعلقة قبل الانتقال إلى الإنهاء النهائي. إذا انتهى الإدخال بعد عامل تشغيل، وربما تلاه رموز '!' أحادية، فإن الحلقة الخارجية تنفذ بدلاً من ذلك مع حالة عامل تشغيل غير محلولة. على سبيل المثال، "common_pid == 1 || common_pid == 2 &&" يترك prog[0].target مساويًا لـ -1. ثم تقرأ التمريرة الثانية prog[-1] قبل أن يتمكن فحص القفز للأمام من رفضه. اعتمادًا على محتويات لوح الذاكرة (slab) المجاورة، يمكنها أيضًا نسخ كلمة خارج الحدود إلى هدف فرع ينجز فحص التوجيه الأمامي فقط. يمكن لنقطة تتبع الأداء (perf tracepoint) ذاتية الاستهداف التي تعد الأحداث الوصول إلى هذا المسار من خلال PERF_EVENT_IOC_SET_FILTER. ارفض السقوط في الحلقة الخارجية (fallthrough) عندما يكون الشرط قد تم تحليلُه مسبقًا. يضمن هذا أن التعبيرات غير الفارغة تصل فقط إلى الإنهاء بعد أن تحل الحلقة الداخلية عوامل التشغيل الخاصة بها. احتفظ بخخطأ عدم وجود تصفية الحالي للإدخال الذي ليس له شروط. أضف اختبار تراجع لعوامل التشغيل المنطقية اللاحقة وعمليات النفي الأحادية.
المعالجة
المراجع
- مرجعhttps://git.kernel.org/stable/c/4a1a6d35359991c5d47f4bf101cfbe1475c94093
- مرجعhttps://git.kernel.org/stable/c/2a98f5d4913ec081e08e1075512cb7ec313d9f72
- مرجعhttps://git.kernel.org/stable/c/15ff3cc7f2beecc3f95d66358f20ad7b057466aa
- مرجعhttps://git.kernel.org/stable/c/b205ff58e02922ac324f931cf9eb238a3acdb048
- مرجعhttps://git.kernel.org/stable/c/5a999b5a16530898f0dbe5f8c50fd45ea72e110b
- مرجعhttps://git.kernel.org/stable/c/1008e9e0b8280d47f1ab5e9c113f666a023a9697
- مرجعhttps://git.kernel.org/stable/c/64993d970dde2a2da353e9e99595a4fa88ec27d9
- مرجعhttps://git.kernel.org/stable/c/5bcdf3c18c3471122ee9652b0e2f5cdb718d9a46
- مرجعhttps://git.kernel.org/stable/c/1fdc4164e488916402badddbb1f51e9380dabb91