From 805ae79e81c23538b4dc70811f633f1d24166603 Mon Sep 17 00:00:00 2001 From: Oleksii Shevchuk Date: Wed, 13 Nov 2019 13:39:11 +0200 Subject: [PATCH] pupwinutils.security: Fix ACL reader and impersonation patch --- .../windows/all/pupwinutils/security.py | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pupy/packages/windows/all/pupwinutils/security.py b/pupy/packages/windows/all/pupwinutils/security.py index 23e5f3e8..52b6c278 100644 --- a/pupy/packages/windows/all/pupwinutils/security.py +++ b/pupy/packages/windows/all/pupwinutils/security.py @@ -1698,7 +1698,7 @@ if not hasattr(Thread, '__impersonate_patch'): except ImportError: pass - Thread.__bootstrap_inner_original(self) + self.__class__.__bootstrap_inner_original(self) setattr(Thread, '_Thread__bootstrap_inner', __bootstrap_inner_patched) setattr(Thread, '__impersonate_patch', True) @@ -2361,17 +2361,21 @@ def getfileowneracls(path): pSDBuf, USid, GSid = _getfileinfo(path, requested_information) - owner_sid = strsid(USid) - group_sid = strsid(GSid) + if USid and GSid: + owner_sid = strsid(USid) + group_sid = strsid(GSid) - owner_name, owner_domain = namebysid(USid) - group_name, group_domain = namebysid(GSid) + owner_name, owner_domain = namebysid(USid) + group_name, group_domain = namebysid(GSid) - owner = owner_sid, owner_name, owner_domain - group = group_sid, group_name, group_domain + owner = owner_sid, owner_name, owner_domain + group = group_sid, group_name, group_domain - infos.append(owner) - infos.append(group) + infos.append(owner) + infos.append(group) + + if not pSDBuf: + return pACL = c_void_p() bDaclPresent = BOOL() @@ -2389,7 +2393,7 @@ def getfileowneracls(path): ACLs = [] i = 0 - while True: + while pACL and True: ace = PACCESS_ALLOWED_ACE() if not GetAce(pACL, i, byref(ace)): break