join: Fix TypeError when handling exception
authorTim Beale <timbeale@catalyst.net.nz>
Wed, 16 Jan 2019 02:17:38 +0000 (15:17 +1300)
committerKarolin Seeger <kseeger@samba.org>
Tue, 5 Feb 2019 14:33:28 +0000 (15:33 +0100)
When we can't resolve a domain name, we were inadvertently throwing a
TypeError whilst trying to output a helpful message. E.g.

ERROR(<class 'TypeError'>): uncaught exception - 'NTSTATUSError' object
does not support indexing

Instead of indexing the object, we want to index the Exception.args so
that we just display the string portion of the exception error.

The same problem is also present for the domain trust commands.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13747

Signed-off-by: Tim Beale <timbeale@catalyst.net.nz>
Reviewed-by: Rowland Penny <rpenny@samba.org>
Reviewed-by: Jeremy Allison <rpenny@samba.org>
(cherry picked from commit 3bb7808984c163a7bba66fb983411d1281589722)

python/samba/join.py
python/samba/netcmd/domain.py

index 3b648f5009047a45f87957989749fb5d7af5620c..3eaac752f4e531e527fc7f7697cc4f8820c4763e 100644 (file)
@@ -338,7 +338,7 @@ class DCJoinContext(object):
             ctx.cldap_ret = ctx.net.finddc(domain=domain, flags=nbt.NBT_SERVER_LDAP | nbt.NBT_SERVER_DS | nbt.NBT_SERVER_WRITABLE)
         except NTSTATUSError as error:
             raise Exception("Failed to find a writeable DC for domain '%s': %s" %
-                            (domain, error[1]))
+                            (domain, error.args[1]))
         except Exception:
             raise Exception("Failed to find a writeable DC for domain '%s'" % domain)
         if ctx.cldap_ret.client_site is not None and ctx.cldap_ret.client_site != "":
index 1d34d0620eb0ec18ad3de36bd3e814a24ccc9160..f9dc08fab641a8722eb8681e664a10da4a0daa65 100644 (file)
@@ -1818,7 +1818,7 @@ class DomainTrustCommand(Command):
             remote_info = remote_net.finddc(flags=remote_flags, domain=domain, address=remote_server)
         except NTSTATUSError as error:
             raise CommandError("Failed to find a writeable DC for domain '%s': %s" %
-                               (domain, error[1]))
+                               (domain, error.args[1]))
         except Exception:
             raise CommandError("Failed to find a writeable DC for domain '%s'" % domain)
         flag_map = {