From 0638f6951ab0b887dddc74c9d688b04caf863533 Mon Sep 17 00:00:00 2001 From: liqiang-fit2cloud Date: Tue, 2 Dec 2025 16:07:51 +0800 Subject: [PATCH] fix: handle long arguments in sandbox. --- apps/common/utils/tool_code.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/common/utils/tool_code.py b/apps/common/utils/tool_code.py index 53fa85f0a..90d63c068 100644 --- a/apps/common/utils/tool_code.py +++ b/apps/common/utils/tool_code.py @@ -82,7 +82,7 @@ class ToolExecutor: err = '{"code":500,"msg":str(e),"data":None}' action_function = f'({function_name !a}, locals_v.get({function_name !a}))' if function_name else 'locals_v.popitem()' python_paths = CONFIG.get_sandbox_python_package_paths().split(',') - target_user = f'os.setgid({pwd.getpwnam(self.user).pw_gid});os.setuid({pwd.getpwnam(self.user).pw_uid});' if self.sandbox else '' + set_run_user = f'os.setgid({pwd.getpwnam(self.user).pw_gid});os.setuid({pwd.getpwnam(self.user).pw_uid});' if self.sandbox else '' _exec_code = f""" try: import os, sys, json, base64, builtins @@ -92,8 +92,8 @@ try: locals_v={'{}'} keywords={keywords} globals_v={'{}'} + {set_run_user} os.environ.clear() - {target_user} exec({dedent(code_str)!a}, globals_v, locals_v) f_name, f = {action_function} for local in locals_v: @@ -103,8 +103,8 @@ try: except Exception as e: builtins.print("\\n{_id}:"+base64.b64encode(json.dumps({err}, default=str).encode()).decode(), flush=True) """ + maxkb_logger.debug(f"Sandbox execute code: {_exec_code}") with tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=True) as f: - maxkb_logger.debug(f"Sandbox execute code: {_exec_code}") f.write(_exec_code) f.flush() subprocess_result = self._exec(f.name)