任何一个可以看到为什么以下IFS,线3279-3285在XV6-rev6代码, 使用:XV6 rev6在系统调用怪代码()
int num;
num = proc−>tf−>eax;
if (num >= 0 && num < SYS_open && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else if (num >= SYS_open && num < NELEM(syscalls) && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else {...}
并不仅仅是:
int num;
num = proc−>tf−>eax;
if (num >= 0 && num < NELEM(syscalls) && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else {...}
'if'中的两个语句可能有一次不同,但后来改变了。是否有可以检查该文件的某种更新日志(如CVS/SVN/GIT日志?)否则,您必须询问开发人员。 –