Grsecurity專案的開發商
在測試補丁時,開發人員注意到,在建置時,編譯器會顯示有關混合程式碼和定義的警告(結構是在程式碼之後定義的,為現有變數賦值):
int 索引 = n;
if (n < HBP_NUM) { 索引 = array_index_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 和 XNUMX。 穩定分支的維護者也遇到了這個警告,他們沒有檢查它是否已經在 Linus 的 master 分支中修復,而是自己修復了。 問題是,他們沒有認真思考,只是
int 索引 = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
索引 = array_index_nospec(索引, HBP_NUM);
來源: opennet.ru