Skip to content

Commit e70fac7

Browse files
Improve security of inline script execution
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1 parent 3435e5d commit e70fac7

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

packages/build/src/extensions/python.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,19 @@ export const runScript = (
150150
return run([scriptPath, ...scriptArgs], options);
151151
};
152152

153-
export const runInline = (scriptContent: string, options: ExecaOptions = {}) => {
153+
export const runInline = async (scriptContent: string, options: ExecaOptions = {}) => {
154154
assert(scriptContent, "Script content is required");
155155

156-
return run([""], { input: scriptContent, ...options });
156+
// Create a temporary file with restricted permissions
157+
const tmpFile = `/tmp/script_${Date.now()}.py`;
158+
await fs.promises.writeFile(tmpFile, scriptContent, { mode: 0o600 });
159+
160+
try {
161+
return await runScript(tmpFile, [], options);
162+
} finally {
163+
// Clean up temporary file
164+
await fs.promises.unlink(tmpFile);
165+
}
157166
};
158167

159168
export default { run, runScript, runInline };

0 commit comments

Comments
 (0)