Fixed #22364 -- Sanitized getpass input in changepassword.

Python 2 getpass on Windows does not accept unicode, even
when containing on ASCII characters. Related #190807.
This commit is contained in:
John Paulett 2014-03-31 16:35:45 -04:00 committed by Tim Graham
parent ea5a984704
commit b5a9166f7e
2 changed files with 5 additions and 1 deletions

View File

@ -6,6 +6,7 @@ from optparse import make_option
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
from django.db import DEFAULT_DB_ALIAS from django.db import DEFAULT_DB_ALIAS
from django.utils.encoding import force_str
class Command(BaseCommand): class Command(BaseCommand):
@ -18,7 +19,7 @@ class Command(BaseCommand):
requires_system_checks = False requires_system_checks = False
def _get_pass(self, prompt="Password: "): def _get_pass(self, prompt="Password: "):
p = getpass.getpass(prompt=prompt) p = getpass.getpass(prompt=force_str(prompt))
if not p: if not p:
raise CommandError("aborted") raise CommandError("aborted")
return p return p

View File

@ -64,5 +64,8 @@ Other bugfixes and changes
environment variable wasn't set environment variable wasn't set
(`#22256 <http://code.djangoproject.com/ticket/22256>`_). (`#22256 <http://code.djangoproject.com/ticket/22256>`_).
* Fixed :djadmin:`changepassword` on Windows
(`#22364 <https://code.djangoproject.com/ticket/22364>`_).
Additionally, Django's vendored version of six, :mod:`django.utils.six` has been Additionally, Django's vendored version of six, :mod:`django.utils.six` has been
upgraded to the latest release (1.6.1). upgraded to the latest release (1.6.1).