مطورو مشروع Grsecurity
أثناء اختبار التصحيح، لاحظ المطورون أنه عند البناء، يعرض المترجم تحذيرًا بشأن خلط التعليمات البرمجية والتعريفات (تم تعريف البنية بعد التعليمات البرمجية، وتعيين قيمة لمتغير موجود):
مؤشر كثافة العمليات = ن؛
إذا (n < HBP_NUM) {index = array_index_nospec(index, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
قبلت لينوس
إذا (n < HBP_NUM) { int Index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
في يوليو، تم نقل الإصلاح أيضًا إلى فروع النواة المستقرة 4.4 و4.9 و4.14 و4.19 و5.2. واجه مشرفو الفروع المستقرة أيضًا التحذير، وبدلاً من التحقق لمعرفة ما إذا كان قد تم إصلاحه بالفعل في فرع لينوس الرئيسي، قاموا بإجراء الإصلاح بأنفسهم. المشكلة هي أنه من دون التفكير حقًا في الأمر، فإنهم فقط
مؤشر كثافة العمليات = ن؛
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
الفهرس = array_index_nospec(index, HBP_NUM);
المصدر: opennet.ru