Module: check_mk
Branch: master
Commit: 14cfafa915ff24e2b67db0a22a69f96af9a3ad4c
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=14cfafa915ff24…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Mar 2 13:07:15 2016 +0100
Avoid endless recursion in crash dump report
This can happen in case of recursive datastructures.
---
web/htdocs/crash_reporting.py | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/web/htdocs/crash_reporting.py b/web/htdocs/crash_reporting.py
index 9aabd6e..5239c2f 100644
--- a/web/htdocs/crash_reporting.py
+++ b/web/htdocs/crash_reporting.py
@@ -398,19 +398,22 @@ def get_local_vars_of_last_exception():
return base64.b64encode(pprint.pformat(local_vars))
-def format_var_for_export(val):
+def format_var_for_export(val, maxdepth=4):
+ if maxdepth == 0:
+ return "Max recursion depth reached"
+
if isinstance(val, dict):
for item_key, item_val in val.items():
- val[item_key] = format_var_for_export(item_val)
+ val[item_key] = format_var_for_export(item_val, maxdepth-1)
elif isinstance(val, list):
for index, item in enumerate(val):
- val[index] = format_var_for_export(item)
+ val[index] = format_var_for_export(item, maxdepth-1)
elif isinstance(val, tuple):
new_val = ()
for item in val:
- new_val += (format_var_for_export(item),)
+ new_val += (format_var_for_export(item, maxdepth-1),)
val = new_val
# Check and limit size