6837842: JNI_CreateJavaVM crashes under impersonation
Reviewed-by: acorn, dholmes
--- a/hotspot/src/os/windows/vm/perfMemory_windows.cpp Thu Nov 18 14:37:46 2010 -0500
+++ b/hotspot/src/os/windows/vm/perfMemory_windows.cpp Fri Nov 19 03:41:50 2010 -0800
@@ -889,6 +889,7 @@
DWORD newACLsize = aclinfo.AclBytesInUse +
(sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD)) * ace_count;
for (int i = 0; i < ace_count; i++) {
+ assert(aces[i].pSid != 0, "pSid should not be 0");
newACLsize += GetLengthSid(aces[i].pSid);
}
@@ -1084,6 +1085,9 @@
aces[0].pSid = get_user_sid(GetCurrentProcess());
aces[0].mask = umask;
+ if (aces[0].pSid == 0)
+ return NULL;
+
// get the well known SID for BUILTIN\Administrators
PSID administratorsSid = NULL;
SID_IDENTIFIER_AUTHORITY SIDAuthAdministrators = SECURITY_NT_AUTHORITY;