私は現在、サンドボックス化されたPyPyを使用してPythonサンドボックスを作成しています。基本的に、サンドボックスは、代わりにシステムライブラリ呼び出しを指定された関数にマップする「コントローラー」を提供することによって機能します。(セットアッププロセスをウォークスルーする)codespeakにある指示に従った後、デフォルトのコントローラーにはの代替が含まれていないためos.fstat()
、を呼び出すとクラッシュすることに気付きましたopen()
。具体的には、インクルードにpypy/translator/sandbox/sandlib.py
はの定義が含まれていませんdo_ll_os__ll_os_fstat
。
これまでのところ、私はそれを次のように実装しました:
def do_ll_os__ll_os_fstat(self, fd):
return os.fstat(fd)
これはうまくいくようです。これは安全ですか?これにより、サンドボックスに穴ができますか?