Распрацоўнікі праекту Grsecurity
У працэсе тэсціравання патча распрацоўшчыкі звярнулі ўвагу, што пры зборцы кампілятар выводзіць папярэджанне аб змешванні кода і азначэнняў (структура была вызначана пасля кода з прысваеннем значэння існуючай зменнай):
int index = n;
if (n < HBP_NUM) { index = array_index_nospec(index, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
Лінус прыняў
if (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. Суправаджаючыя стабільныя галіны таксама сутыкнуліся з папярэджаннем і замест таго, каб праверыць, ці не ліквідавана яно ўжо ў master-галінцы Лінуса, уласнаручна ўнеслі выпраўленне. Праблема ў тым, што яны, асабліва не задумваючыся, проста
int index = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);
Крыніца: opennet.ru