Coverage for adhoc-cicd-odoo-odoo / odoo / _monkeypatches / ast.py: 65%
17 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 18:15 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 18:15 +0000
1# ruff: noqa: E402, PLC0415
2# ignore import not at top of the file
3import ast
4import logging
5import os
7_logger = logging.getLogger(__name__)
8orig_literal_eval = ast.literal_eval
11def literal_eval(expr):
12 # limit the size of the expression to avoid segmentation faults
13 # the default limit is set to 100KiB
14 # can be overridden by setting the ODOO_LIMIT_LITEVAL_BUFFER buffer_size_environment variable
16 buffer_size = 102400
17 buffer_size_env = os.getenv("ODOO_LIMIT_LITEVAL_BUFFER")
19 if buffer_size_env: 19 ↛ 20line 19 didn't jump to line 20 because the condition on line 19 was never true
20 if buffer_size_env.isdigit():
21 buffer_size = int(buffer_size_env)
22 else:
23 _logger.error("ODOO_LIMIT_LITEVAL_BUFFER has to be an integer, defaulting to 100KiB")
25 if isinstance(expr, str) and len(expr) > buffer_size: 25 ↛ 26line 25 didn't jump to line 26 because the condition on line 25 was never true
26 raise ValueError("expression can't exceed buffer limit")
28 return orig_literal_eval(expr)
31def patch_module():
32 ast.literal_eval = literal_eval