From: Noel Power Date: Wed, 16 May 2018 15:51:34 +0000 (+0100) Subject: python/samba/netcmd: net.change_password should be passed string X-Git-Tag: ldb-1.4.0~140 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7144f2e115f7d446de880a5680c2f2f02dd9467;p=thirdparty%2Fsamba.git python/samba/netcmd: net.change_password should be passed string password param which in python2 (is str) is incorrectly encoded before passing to net.change_password. python2 - password is either unicode or str, if str we should decode to get unicode (and then pass to net.change_password). python3 - password is either str or bytes, if bytes then decode (and pass as 'str' to net.change_password). Signed-off-by: Noel Power Reviewed-by: Andrew Bartlett --- diff --git a/python/samba/netcmd/user.py b/python/samba/netcmd/user.py index 4009d6304bf..f211b5158ce 100644 --- a/python/samba/netcmd/user.py +++ b/python/samba/netcmd/user.py @@ -54,7 +54,7 @@ from samba.netcmd import ( SuperCommand, Option, ) - +from samba.compat import text_type try: import io @@ -713,7 +713,9 @@ class cmd_user_password(Command): self.outf.write("Sorry, passwords do not match.\n") try: - net.change_password(password.encode('utf-8')) + if not isinstance(password, text_type): + password = password.decode('utf8') + net.change_password(password) except Exception as msg: # FIXME: catch more specific exception raise CommandError("Failed to change password : %s" % msg)