From f92ebde75a5d815185a937fd4c1d57b2d1b53085 Mon Sep 17 00:00:00 2001 From: jaydesl <35102795+jaydesl@users.noreply.github.com> Date: Thu, 22 Oct 2020 08:59:49 +0100 Subject: [PATCH] Add more builtins to safe list (python_script) (#42146) --- .../components/python_script/__init__.py | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/python_script/__init__.py b/homeassistant/components/python_script/__init__.py index 36963dc2f20..6bd840074d9 100644 --- a/homeassistant/components/python_script/__init__.py +++ b/homeassistant/components/python_script/__init__.py @@ -5,15 +5,18 @@ import logging import os import time -from RestrictedPython import compile_restricted_exec +from RestrictedPython import ( + compile_restricted_exec, + limited_builtins, + safe_builtins, + utility_builtins, +) from RestrictedPython.Eval import default_guarded_getitem from RestrictedPython.Guards import ( full_write_guard, guarded_iter_unpack_sequence, guarded_unpack_sequence, - safe_builtins, ) -from RestrictedPython.Utilities import utility_builtins import voluptuous as vol from homeassistant.const import SERVICE_RELOAD @@ -178,12 +181,21 @@ def execute(hass, filename, source, data=None): return getattr(obj, name, default) + extra_builtins = { + "datetime": datetime, + "sorted": sorted, + "time": TimeWrapper(), + "dt_util": dt_util, + "min": min, + "max": max, + "sum": sum, + "any": any, + "all": all, + } builtins = safe_builtins.copy() builtins.update(utility_builtins) - builtins["datetime"] = datetime - builtins["sorted"] = sorted - builtins["time"] = TimeWrapper() - builtins["dt_util"] = dt_util + builtins.update(limited_builtins) + builtins.update(extra_builtins) logger = logging.getLogger(f"{__name__}.{filename}") restricted_globals = { "__builtins__": builtins,