Hi,

We've seen this happen when manually manipulating the contents of these
columns in the table. Was there any database work being done via script or
manual SQL manipulation?

Basically, the code looks in the password column for a special character at
the beginning (a tab). If present, the following data is expected to be
encrypted. If not, it's a plain text password, which will then be encrypted.

What can happen is if the tab was ever dropped, it would have seen the
content as plain text and tried to re-encrypt it. The next decrypt would
have then returned the binary content from the previous encryption, instead
of valid UTF-8 content. This triggers the errors you see below.

If this is happening occasionally, then these tables are being manually
manipulated in some way that corrupts the field. Can you think of what may
be running or what SQL work was done that would cause that?

A common one is dumping the entries to the screen using SQL and then
copy/pasting them back into the database (usually another database).

You shouldn't delete the repository entries, though. Once I know what's
going on, I can give you a solution for fixing up the passwords.

Christian


On Wed, Mar 1, 2017 at 07:29 Michael Governale <[email protected]>
wrote:

> We ran into this issue twice this week. Going to review pages and
> repository config pages is giving a 500 error. The log messages are below.
>
> The last time we deleted and recreated the repository configuration pages.
> This loses the old / active reviews and isn't ideal.
>
> Any help or advice is appreciate. Thanks.
>
> Review Board 2.5.7
>
> Python warning:
>
>  - /usr/lib/python2.7/site-packages/feedparser.py:364: DeprecationWarning: To 
> avoid breaking existing software while fixing issue 310, a temporary mapping 
> has been created from `updated_parsed` to `published_parsed` if 
> `updated_parsed` doesn't exist. This fallback will be removed in a future 
> version of feedparser.
>   DeprecationWarning)
>
>
> Repository configuration error:
>
>  - Exception thrown for user at 
> http://reviewboard/admin/db/scmtools/repository/9/
>
> 'utf8' codec can't decode byte 0xbc in position 0: invalid start byte
> Traceback (most recent call last):
>   File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 
> 112, in get_response
>     response = wrapped_callback(request, *callback_args, **callback_kwargs)
>   File "/usr/lib/python2.7/site-packages/django/contrib/admin/options.py", 
> line 465, in wrapper
>     return self.admin_site.admin_view(view)(*args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 
> 99, in _wrapped_view
>     response = view_func(request, *args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/django/views/decorators/cache.py", 
> line 52, in _wrapped_view_func
>     response = view_func(request, *args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 
> 198, in inner
>     return view(request, *args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 
> 29, in _wrapper
>     return bound_func(*args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 
> 99, in _wrapped_view
>     response = view_func(request, *args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 
> 25, in bound_func
>     return func(self, *args2, **kwargs2)
>   File "/usr/lib/python2.7/site-packages/django/db/transaction.py", line 371, 
> in inner
>     return func(*args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/django/contrib/admin/options.py", 
> line 1270, in change_view
>     form = ModelForm(instance=obj)
>   File "/usr/lib/python2.7/site-packages/reviewboard/scmtools/forms.py", line 
> 431, in __init__
>     self._populate_repository_info_fields()
>   File "/usr/lib/python2.7/site-packages/reviewboard/scmtools/forms.py", line 
> 517, in _populate_repository_info_fields
>     self.fields['password'].initial = self.instance.password
>   File "/usr/lib/python2.7/site-packages/reviewboard/scmtools/models.py", 
> line 217, in _get_password
>     password = decrypt_password(password).decode('utf-8')
>   File "/usr/lib64/python2.7/encodings/utf_8.py", line 16, in decode
>     return codecs.utf_8_decode(input, errors, True)
> UnicodeDecodeError: 'utf8' codec can't decode byte 0xbc in position 0: 
> invalid start byte
>
>
>
> Review error:
>
>  - Exception thrown for user at http://reviewboard/r/19/
>
> 'utf8' codec can't decode byte 0xa9 in position 0: invalid start byte
> Traceback (most recent call last):
>   File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 
> 112, in get_response
>     response = wrapped_callback(request, *callback_args, **callback_kwargs)
>   File "/usr/lib/python2.7/site-packages/reviewboard/accounts/decorators.py", 
> line 25, in _check
>     return view_func(*args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/reviewboard/site/decorators.py", 
> line 35, in _check
>     return view_func(request, local_site=local_site, *args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/reviewboard/reviews/views.py", line 
> 780, in review_detail
>     'screenshots': screenshots,
>   File "/usr/lib/python2.7/site-packages/reviewboard/reviews/context.py", 
> line 99, in make_review_request_context
>     upload_diff_form = UploadDiffForm(review_request, request=request)
>   File "/usr/lib/python2.7/site-packages/reviewboard/reviews/forms.py", line 
> 127, in __init__
>     data, *args, **kwargs)
>   File "/usr/lib/python2.7/site-packages/reviewboard/diffviewer/forms.py", 
> line 41, in __init__
>     if self.repository.get_scmtool().get_diffs_use_absolute_paths():
>   File "/usr/lib/python2.7/site-packages/reviewboard/scmtools/models.py", 
> line 231, in get_scmtool
>     return cls(self)
>   File 
> "/usr/lib/python2.7/site-packages/reviewboard/scmtools/svn/__init__.py", line 
> 69, in __init__
>     credentials = repository.get_credentials()
>   File "/usr/lib/python2.7/site-packages/reviewboard/scmtools/models.py", 
> line 281, in get_credentials
>     password = self.password
>   File "/usr/lib/python2.7/site-packages/reviewboard/scmtools/models.py", 
> line 217, in _get_password
>     password = decrypt_password(password).decode('utf-8')
>   File "/usr/lib64/python2.7/encodings/utf_8.py", line 16, in decode
>     return codecs.utf_8_decode(input, errors, True)
> UnicodeDecodeError: 'utf8' codec can't decode byte 0xa9 in position 0: 
> invalid start byte
>
> --
> Supercharge your Review Board with Power Pack:
> https://www.reviewboard.org/powerpack/
> Want us to host Review Board for you? Check out RBCommons:
> https://rbcommons.com/
> Happy user? Let us know! https://www.reviewboard.org/users/
> ---
> You received this message because you are subscribed to the Google Groups
> "reviewboard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
-- 
-- 
Christian Hammond
President/CEO of Beanbag <https://www.beanbaginc.com/>
Makers of Review Board <https://www.reviewboard.org/>

-- 
Supercharge your Review Board with Power Pack: 
https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: 
https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
--- 
You received this message because you are subscribed to the Google Groups 
"reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to