Add error handling for when we can't decrypt stored passwords.

Review Request #14276 — Created Dec. 16, 2024 and submitted — Latest diff uploaded

Information

Review Board
release-7.x

Reviewers

When a repository has a stored password that can not be decrypted
(usually due to the SECRET_KEY having been changed), we run into some
especially ugly behavior. Any review requests which attempt to access
that repository will just crash entirely with a UnicodeDecodeError,
and attempting to open the repository form to reset the username and
password will show an empty form because the data cannot be loaded.

This change adds some error handling so that if we cannot decrypt the
password, we'll log the error and then return None. This will result
in authentication errors attempting to access the repository, and allows
opening the repository form in the admin to fix it as well.

This also fixes the pysvn implementation of normalize_error to pass in
the error message as the msg parameter to the exception, which makes
it so we don't try to convert that error message to a list for display
(the base SSH authentication error class that SVN auth errors inherit
from has the SSH authentication methods list as its first argument).

Created an authenticated repository with one SECRET_KEY and then
changed it.

  • Saw that I was able to open the repository settings form and have it
    populated with everything except the password. Previously the form
    would not only be blank, but the current repository type
    ("Subversion") wasn't appearing in the tool drop-down at all.
  • Loaded a review request and diff and saw that instead of getting an
    unhandled UnicodeDecodeError exception, I now was able to view the
    review request and saw authentication error notices in the diff
    content.
  • Saw that said authentication errors were correctly formatted.

Commits

Files