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

1# ruff: noqa: E402, PLC0415 

2# ignore import not at top of the file 

3import ast 

4import logging 

5import os 

6 

7_logger = logging.getLogger(__name__) 

8orig_literal_eval = ast.literal_eval 

9 

10 

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 

15 

16 buffer_size = 102400 

17 buffer_size_env = os.getenv("ODOO_LIMIT_LITEVAL_BUFFER") 

18 

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") 

24 

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") 

27 

28 return orig_literal_eval(expr) 

29 

30 

31def patch_module(): 

32 ast.literal_eval = literal_eval