Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Browse files

[1.5.x] Fixed #19807 -- Sanitized getpass input in createsuperuser

Python 2 getpass on Windows doesn't accept unicode, even when
containing only ascii chars.
Thanks Semmel for the report and tests.
Backport of 02e5909 from master.
  • Loading branch information...
1 parent 42e87c1 commit 5921f15c113f41f3baca0b599ccb9dad83649682 @claudep claudep committed
2  django/contrib/auth/management/commands/
@@ -121,7 +121,7 @@ def handle(self, *args, **options):
while password is None:
if not password:
password = getpass.getpass()
- password2 = getpass.getpass('Password (again): ')
+ password2 = getpass.getpass(force_str('Password (again): '))
if password != password2:
self.stderr.write("Error: Your passwords didn't match.")
password = None
9 django/contrib/auth/tests/
@@ -13,7 +13,7 @@
from django.test import TestCase
from django.test.utils import override_settings
from django.utils.encoding import force_str
-from django.utils.six import StringIO
+from django.utils.six import binary_type, StringIO
def mock_inputs(inputs):
@@ -24,8 +24,11 @@ def mock_inputs(inputs):
def inner(test_func):
def wrapped(*args):
class mock_getpass:
- pass
- mock_getpass.getpass = staticmethod(lambda p=None: inputs['password'])
+ @staticmethod
+ def getpass(prompt=b'Password: ', stream=None):
+ # getpass on Windows only supports prompt as bytestring (#19807)
+ assert isinstance(prompt, binary_type)
+ return inputs['password']
def mock_input(prompt):
# prompt should be encoded in Python 2. This line will raise an

0 comments on commit 5921f15

Please sign in to comment.
Something went wrong with that request. Please try again.