我正在使用https://github.com/openjudge/sandbox此处列出的sample2.py作为包装器来调用沙箱库(又名libsandbox && pysandbox)。

以下是我的C ++代码

#include <stdio.h>
int main(){
   return 0;
}


当我运行sample2.py的结果是

result: RF
cpu: 2ms
mem: 288kB


谁能告诉我要完成这项工作我需要对包装程序进行哪些更改?

最佳答案

RF结果代码很可能是由于对文件操作的意外syscalls(即SYS_open()SYS_close()SYS_stat(),...)。当(1)目标程序实际执行文件操作时,和(或)(2)动态链接并需要在运行时加载.so库时,就会发生这种情况。由于目标程序不调用文件操作,因此属于后一种情况。

然后,要解决RF结果,


静态链接目标程序,以避免依赖共享库;要么,
扩展包装脚本中的策略规则以处理相关的SYSCALL / SYSRET事件;


免责声明:我是libsandbox的作者。

08-07 03:05