iplweb / django-password-policies-iplweb

Django unicode-aware password policies.
Other
7 stars 21 forks source link

Setting a large PASSWORD_DURATION_SECONDS causes an error #42

Open mikemanger opened 1 week ago

mikemanger commented 1 week ago

Setting PASSWORD_DURATION_SECONDS to a large value gives an overflow error.

# settings.py
# 23992800719976 seconds
PASSWORD_DURATION_SECONDS = 24 * 9999**3
Traceback (most recent call last):
  File "[DIR]/site-packages/password_policies/middleware.py", line 186, in process_request
    self.check = PasswordCheck(request.user)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "[DIR]/site-packages/password_policies/utils.py", line 16, in __init__
    self.expiry_datetime = self.get_expiry_datetime()
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "[DIR]/site-packages/password_policies/utils.py", line 49, in get_expiry_datetime
    return timezone.now() - timedelta(seconds=seconds)
           ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
OverflowError: date value out of range

Tested with python 3.12.

mikemanger commented 1 week ago

I think worth catching and setting the value to timedelta.max.