From: Douglas Bagnall Date: Thu, 16 Jan 2020 01:12:02 +0000 (+1300) Subject: samba-tool gpo: improve UNC parsing X-Git-Tag: samba-4.12.0rc1~86 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4bc481c5cb7d772f473171949a3d522788bb7dcf;p=thirdparty%2Fsamba.git samba-tool gpo: improve UNC parsing The "UNC doesn't start with \\\\ or //" message was unreachable due to a logic error, and an UNC starting with \\ would have been split on / if there were enough /s in the string. The unreachable exception was first noticed by Gerhard Lausser in a github pull request (https://github.com/samba-team/samba/pull/123), but that patch no longer applies with this more thorough rewrite. Signed-off-by: Douglas Bagnall Reviewed-by: Jeremy Allison --- diff --git a/python/samba/netcmd/gpo.py b/python/samba/netcmd/gpo.py index e9878c13570..76ba9fa18a9 100644 --- a/python/samba/netcmd/gpo.py +++ b/python/samba/netcmd/gpo.py @@ -235,15 +235,16 @@ def del_gpo_link(samdb, container_dn, gpo): def parse_unc(unc): '''Parse UNC string into a hostname, a service, and a filepath''' - if unc.startswith('\\\\') and unc.startswith('//'): - raise ValueError("UNC doesn't start with \\\\ or //") - tmp = unc[2:].split('/', 2) - if len(tmp) == 3: - return tmp - tmp = unc[2:].split('\\', 2) - if len(tmp) == 3: - return tmp - raise ValueError("Invalid UNC string: %s" % unc) + tmp = [] + if unc.startswith('\\\\'): + tmp = unc[2:].split('\\', 2) + elif unc.startswith('//'): + tmp = unc[2:].split('/', 2) + + if len(tmp) != 3: + raise ValueError("Invalid UNC string: %s" % unc) + + return tmp def find_parser(name, flags=re.IGNORECASE):