Skip to content

[BUG] Giving a big number as input for AccountChartsForm causes a 500 error #3245

@stveit

Description

@stveit

Describe the bug

If you set the value in the days input to a big number (e.g. 123123123) then you will get a 500 error.
You will get different errors based on how big the number is. 123123123 gives a DatetimeFieldOverflow with the message timestamp out of range. while 123123123123 gives an IntervalFieldOverflow error with the message

interval field value out of range: "123123123123.0 days"
LINE 17: ...              WHERE acctstoptime > NOW()-interval '123123123...

To Reproduce

Steps to reproduce the behavior

  1. Go to /radius/acctcharts
  2. Enter 123123123 into the Day(s) input box
  3. Click on Show me
  4. See error

Expected behavior

If there is a logical limit to how big the number should be, then either the form shouldnt allow you to
click Show me until you enter a valid number, or an error should be shown saying something along the lines of Days must be between X and Y after you click the button.

If there shouldnt be a limit on how big the number can be, then it should work the same as it does with a smaller number.

Tracebacks

Environment:

Traceback (most recent call last):
  File "/opt/venvs/nav/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/opt/venvs/nav/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/source/python/nav/web/radius/views.py", line 161, in account_charts
    query.execute()
  File "/source/python/nav/web/radius/db.py", line 56, in execute
    cursor.execute(self.query, self.parameters)

Exception Type: DatetimeFieldOverflow at /radius/acctcharts
Exception Value: timestamp out of range


Traceback (most recent call last):
  File "/opt/venvs/nav/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/opt/venvs/nav/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/source/python/nav/web/radius/views.py", line 161, in account_charts
    query.execute()
  File "/source/python/nav/web/radius/db.py", line 56, in execute
    cursor.execute(self.query, self.parameters)

Exception Type: IntervalFieldOverflow at /radius/acctcharts
Exception Value: interval field value out of range: "123123123123.0 days"
LINE 17: ...              WHERE acctstoptime > NOW()-interval '123123123...

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions