1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-09 08:58:35 +03:00

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 <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
Douglas Bagnall 2020-01-16 14:12:02 +13:00 committed by Jeremy Allison
parent ebced94a87
commit 4bc481c5cb

View File

@ -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):