Add more builtins to safe list (python_script) (#42146)

This commit is contained in:
jaydesl 2020-10-22 08:59:49 +01:00 committed by GitHub
parent 1c58a0fedc
commit f92ebde75a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,15 +5,18 @@ import logging
import os import os
import time 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.Eval import default_guarded_getitem
from RestrictedPython.Guards import ( from RestrictedPython.Guards import (
full_write_guard, full_write_guard,
guarded_iter_unpack_sequence, guarded_iter_unpack_sequence,
guarded_unpack_sequence, guarded_unpack_sequence,
safe_builtins,
) )
from RestrictedPython.Utilities import utility_builtins
import voluptuous as vol import voluptuous as vol
from homeassistant.const import SERVICE_RELOAD from homeassistant.const import SERVICE_RELOAD
@ -178,12 +181,21 @@ def execute(hass, filename, source, data=None):
return getattr(obj, name, default) 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 = safe_builtins.copy()
builtins.update(utility_builtins) builtins.update(utility_builtins)
builtins["datetime"] = datetime builtins.update(limited_builtins)
builtins["sorted"] = sorted builtins.update(extra_builtins)
builtins["time"] = TimeWrapper()
builtins["dt_util"] = dt_util
logger = logging.getLogger(f"{__name__}.{filename}") logger = logging.getLogger(f"{__name__}.{filename}")
restricted_globals = { restricted_globals = {
"__builtins__": builtins, "__builtins__": builtins,