Commits

Armin Ronacher committed 2b885ce

Added better error reporting for unicode errors in sessions

  • Participants
  • Parent commits 8339cb3

Comments (0)

Files changed (2)

flask/debughelpers.py

 """
 
 
+class UnexpectedUnicodeError(AssertionError, UnicodeError):
+    """Raised in places where we want some better error reporting for
+    unexpected unicode or binary data.
+    """
+
+
 class DebugFilesKeyError(KeyError, AssertionError):
     """Raised from request.files during debugging.  The idea is that it can
     provide a better error message than just a generic KeyError/BadRequest.

flask/sessions.py

                 return {' d': http_date(value)}
             elif isinstance(value, dict):
                 return dict((k, _tag(v)) for k, v in value.iteritems())
+            elif isinstance(value, str):
+                try:
+                    return unicode(value)
+                except UnicodeError:
+                    raise UnexpectedUnicodeError(u'A byte string with '
+                        u'non-ASCII data was passed to the session system '
+                        u'which can only store unicode strings.  Consider '
+                        u'base64 encoding your string (String was %r)' % value)
             return value
         return json.dumps(_tag(value), separators=(',', ':'))
 
         response.set_cookie(app.session_cookie_name, val,
                             expires=expires, httponly=httponly,
                             domain=domain, path=path, secure=secure)
+
+
+from flask.debughelpers import UnexpectedUnicodeError