Problem: bigint in POST message makes GET messages.json return a 500
Opened this issue · 0 comments
odesenfans commented
A POST message was accepted containing a big integer. We should reject messages containing integers bigger than 2^53 (limit for valid JSON) as this breaks JSON serialization in the API.
[2023-09-13 10:14:26 +0000] [106] [ERROR] Error handling request
OverflowError: int too big to convert
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/venv/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
resp = await request_handler(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.11/site-packages/sentry_sdk/integrations/aiohttp.py", line 126, in sentry_app_handle
reraise(*_capture_exception(hub))
File "/opt/venv/lib/python3.11/site-packages/sentry_sdk/_compat.py", line 60, in reraise
raise value
File "/opt/venv/lib/python3.11/site-packages/sentry_sdk/integrations/aiohttp.py", line 116, in sentry_app_handle
response = await old_handle(self, request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.11/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/opt/pyaleph/src/aleph/web/controllers/messages.py", line 231, in view_messages_list
return format_response(
^^^^^^^^^^^^^^^^
File "/opt/pyaleph/src/aleph/web/controllers/messages.py", line 203, in format_response
return web.json_response(text=aleph_json.dumps(response).decode("utf-8"))
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/pyaleph/src/aleph/toolkit/json.py", line 37, in dumps
return orjson.dumps(obj)
^^^^^^^^^^^^^^^^^
TypeError: Integer exceeds 64-bit range
The problematic message. See "random_number": 65810885944677670000000000000000000000000000000000000000000000000000000000000
.