diff options
author | Noel Power <noel.power@suse.com> | 2018-04-27 15:11:54 +0100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2018-09-03 03:22:23 +0200 |
commit | 252950ac08554d7c86a5cfc2c7fbc626c4c5f863 (patch) | |
tree | f1872e44699289ba5714144b6cc3668a80615a1c /python | |
parent | 7a2df705f6a834194e2e50210bf36a0d425a8fa1 (diff) | |
download | samba-252950ac08554d7c86a5cfc2c7fbc626c4c5f863.tar.gz |
python/samba/netcmd: Fix password usage for py2/py3 compatability
getpass returns str (e.g. bytes) in python2 and str (unicode) in
py3. Adapt code to so we don't do illegal things (like try and decode)
a string in python3
Signed-off-by: Noel Power <noel.power@suse.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'python')
-rw-r--r-- | python/samba/netcmd/domain.py | 7 | ||||
-rw-r--r-- | python/samba/provision/__init__.py | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/python/samba/netcmd/domain.py b/python/samba/netcmd/domain.py index f3a17eec6b8..56386c579c1 100644 --- a/python/samba/netcmd/domain.py +++ b/python/samba/netcmd/domain.py @@ -102,6 +102,8 @@ from samba.provision.common import ( from samba.netcmd.pso import cmd_domain_passwordsettings_pso from samba.netcmd.domain_backup import cmd_domain_backup +from samba.compat import binary_type + string_version_to_constant = { "2008_R2": DS_DOMAIN_FUNCTION_2008_R2, "2012": DS_DOMAIN_FUNCTION_2012, @@ -570,8 +572,9 @@ class cmd_domain_provision(Command): def _adminpass_issue(self, adminpass): """Returns error string for a bad administrator password, or None if acceptable""" - - if len(adminpass.decode('utf-8')) < DEFAULT_MIN_PWD_LENGTH: + if isinstance(adminpass, binary_type): + adminpass = adminpass.decode('utf8') + if len(adminpass) < DEFAULT_MIN_PWD_LENGTH: return "Administrator password does not meet the default minimum" \ " password length requirement (%d characters)" \ % DEFAULT_MIN_PWD_LENGTH diff --git a/python/samba/provision/__init__.py b/python/samba/provision/__init__.py index 44434a215ff..9ecb2018060 100644 --- a/python/samba/provision/__init__.py +++ b/python/samba/provision/__init__.py @@ -28,6 +28,7 @@ __docformat__ = "restructuredText" from samba.compat import urllib_quote from samba.compat import string_types +from samba.compat import binary_type from base64 import b64encode import errno import os @@ -2313,7 +2314,8 @@ def provision(logger, session_info, smbconf=None, adminpass = samba.generate_random_password(12, 32) adminpass_generated = True else: - adminpass = unicode(adminpass, 'utf-8') + if isinstance(adminpass, binary_type): + adminpass = adminpass.decode('utf-8') adminpass_generated = False if samdb_fill == FILL_FULL: |