--- ./samba-4.7.5/python/samba/provision/__init__.py 2018-08-16 16:37:21.000000000 +0200 +++ /usr/lib/python2.7/dist-packages/samba/provision/__init__.py 2018-08-16 16:54:08.060000000 +0200 @@ -41,6 +41,9 @@ import tempfile import samba.dsdb +from samba import ntstatus +import ctypes + import ldb from samba.auth import system_session, admin_session @@ -1659,10 +1662,30 @@ else: return "VFS" +def _uint32(v): + return ctypes.c_uint32(v).value + +def check_runtime_error(runtime, val): + if runtime is None: + return False + + err32 = _uint32(runtime[0]) + if err32 == val: + return True + return False + def check_dir_acl(path, acl, lp, domainsid, direct_db_access): - fsacl = getntacl(lp, path, direct_db_access=direct_db_access, service=SYSVOL_SERVICE) - fsacl_sddl = fsacl.as_sddl(domainsid) - + try: + fsacl = getntacl(lp, path, direct_db_access=direct_db_access, service=SYSVOL_SERVICE) + fsacl_sddl = fsacl.as_sddl(domainsid) + except TypeError as error: + return + except NTSTATUSError as error: + if check_runtime_error(error, ntstatus.NT_STATUS_OBJECT_NAME_NOT_FOUND): + print "ERROR: File not found", path + return + else: + raise """changed acl in if-statements to acl_sddl""" if isinstance(domainsid, str): sid = security.dom_sid(domainsid)