8000 Handle iteration errors during frame traversal (#239) · etherscan-io/sentry-python@99ee2ac · GitHub
[go: up one dir, main page]

Skip to content

Commit 99ee2ac

Browse files
leotrubachuntitaker
authored andcommitted
Handle iteration errors during frame traversal (getsentry#239)
* Handle iteration errors during frame traversal * Fixes as suggested by @untitaker * Add explanatory comments * Replace deprecated `render_to_response` with `render`
1 parent 3efd8e7 commit 99ee2ac

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

sentry_sdk/utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,9 @@ def safe_repr(value):
310310
def object_to_json(obj):
311311
def _walk(obj, depth):
312312
if depth < 4:
313-
if isinstance(obj, Sequence) and not isinstance(obj, (bytes, text_type)):
313+
if isinstance(obj, (list, tuple)):
314+
# It is not safe to iterate over another sequence types as this may raise errors or
315+
# bring undesired side-effects (e.g. Django querysets are executed during iteration)
314316
return [_walk(x, depth + 1) for x in obj]
315317
if isinstance(obj, Mapping):
316318
return {safe_str(k): _walk(v, depth + 1) for k, v in obj.items()}

tests/integrations/django/myapp/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.contrib.auth import login
22
from django.contrib.auth.models import User
33
from django.http import HttpResponse, HttpResponseServerError, HttpResponseNotFound
4-
from django.shortcuts import render_to_response
4+
from django.shortcuts import render
55
from django.views.generic import ListView
66

77
import sentry_sdk
@@ -45,5 +45,5 @@ def handler404(*args, **kwargs):
4545
return HttpResponseNotFound("404")
4646

4747

48-
def template_exc(*args, **kwargs):
49-
return render_to_response("error.html")
48+
def template_exc(request, *args, **kwargs):
49+
return render(request, "error.html")

0 commit comments

Comments
 (0)
0