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