diff --git a/api/src/job.js b/api/src/job.js index 8c3fa79..d46120b 100644 --- a/api/src/job.js +++ b/api/src/job.js @@ -156,11 +156,7 @@ class Job { '-s', '-c', '/box/submission', - '-E', - 'HOME=/tmp', - ...this.runtime.env_vars.flat_map(v => ['-E', v]), - '-E', - `PISTON_LANGUAGE=${this.runtime.language}`, + '-e', `--dir=${this.runtime.pkgdir}`, `--dir=/etc:noexec`, `--processes=${this.runtime.max_process_count}`, @@ -179,6 +175,10 @@ class Job { ...args, ], { + env: { + ...this.runtime.env_vars, + PISTON_LANGUAGE: this.runtime.language, + }, stdio: 'pipe', } ); diff --git a/api/src/runtime.js b/api/src/runtime.js index 90a2225..9a2adf4 100644 --- a/api/src/runtime.js +++ b/api/src/runtime.js @@ -178,7 +178,15 @@ class Runtime { const env_file = path.join(this.pkgdir, '.env'); const env_content = fss.read_file_sync(env_file).toString(); - this._env_vars = env_content.trim().split('\n'); + this._env_vars = {}; + + env_content + .trim() + .split('\n') + .map(line => line.split('=', 2)) + .forEach(([key, val]) => { + this._env_vars[key.trim()] = val.trim(); + }); } return this._env_vars;