Développeurs du projet Grsecurity
Lors du test du correctif, les développeurs ont remarqué que lors de la construction, le compilateur affiche un avertissement concernant le mélange de code et de définitions (la structure a été définie après le code en attribuant une valeur à une variable existante) :
indice int = n ;
si (n < HBP_NUM) { index = array_index_nospec(index, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
Linus a accepté
if (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
En juillet, le correctif a également été porté sur les branches stables du noyau 4.4, 4.9, 4.14, 4.19 et 5.2. Les responsables de la version stable ont également rencontré l'avertissement et, au lieu de vérifier s'il était déjà corrigé dans la branche principale de Linus, ils l'ont corrigé eux-mêmes. Le problème est que, sans trop y penser, ils
indice int = n ;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);
Source: opennet.ru