Skip to content

对关于sandbox的某条测试数据的疑问

我的代码无法通过测试样例

"sandbox deny_write.txt ./a.out\n"(测试数据A)

但这个测试数据从命令的结构上看并不复杂,而我的代码也能相对正常地通过其他大部分数据,比如

"sandbox deny_execve.txt ./b/hello\n"

这个和测试数据A的结构很类似,又比如

"cd a\n sandbox ../deny_write.txt ls > 1.txt\n cat 1.txt\n rm 1.txt\n"

这个和测试数据A使用了同样的rule,也能正常通过。还有诸如

"sandbox deny_write_arg0.txt ./a.out\n"

"sandbox deny_write_arg01.txt ./a.out\n"

也都能正确给出结果。因此我不太清楚应该朝哪方向修改代码来通过测试数据A。 从文件的名称上看,deny_write.txt应该试图阻塞write, 我的代码直接将write的第二个参数当作字符串来对待,但根据手册,这并不总是正确,我尝试过将其当作指针转换为十六进制字符串,但没有取得成效,依旧无法通过(不排除实现的有问题的可能)。但其余两个参数确定为数字,不太有错误的可能,所以应该还是第二个参数的判断或转化有误。希望能够给予相关的提示,比如可否给出a.out对应的源代码或文本文件deny_write.txt的内容,方便本地debug。