Програмери на проектот Grsecurity
При тестирањето на закрпата, програмерите забележаа дека при градењето, компајлерот прикажува предупредување за мешање на код и дефиниции (структурата беше дефинирана по кодот, доделувајќи вредност на постоечка променлива):
int индекс = n;
ако (n < HBP_NUM) { индекс = низа_индекс_nospec(индекс, HBP_NUM); struct perf_event *bp = нишка->ptrace_bps[индекс];
Линус прифати
if (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = нишка->ptrace_bps[индекс];
Во јули, поправката беше пренесена и во гранките на стабилното јадро 4.4, 4.9, 4.14, 4.19 и 5.2. Одржувачите на стабилните гранки исто така наишле на предупредувањето и наместо да проверат дали е веќе поправено во главната гранка на Линус, тие сами направиле поправка. Проблемот е што без навистина да размислуваат за тоа, тие едноставно
int индекс = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
индекс = низа_индекс_nospec(индекс, HBP_NUM);
Извор: opennet.ru