Hi Roger!

On 02.06.2015 0:38, Roger Riggs wrote:
Please review a change to report the user/owner in ProcessHandle.info to
have the same form for the owner identification as provided by java.nio.Files.
On Windows it includes the domain with the user name.

The test is updated to remove a dependency on the OS command whoami
and instead compare the users process with the owner of a file created
by the process improving portability.

Webrev:
    http://cr.openjdk.java.net/~rriggs/webrev-whoami-8081567/


1)

+    if (domainLen > 0) {
+      wcscat(domain, L"\\");
+    } else {
+      domain[0] = L'\0';
+    }
+    wcscat(domain, name);

Here, domainLen is either equal to whatever LookupAccountSid has set it to.

In MSDN [1] it's written:
On input, specifies the size, in TCHARs, of the lpReferencedDomainName buffer. If the function fails because the buffer is too small or if cchReferencedDomainName is zero, cchReferencedDomainName receives the required buffer size, including the terminating null character.

I see in the comments that in fact on success this parameter receives the length of the resulting string.
But should we rely on that undocumented behavior?
Does it really happen that LookupAccountSidW() returns 0, setting domainLen to 0 and leaving the domain buffer uninitialized?
From the published example [2] it seems that this shouldn't happen.

2)
I think domainLen should be set to
     DWORD domainLen = sizeof(domain) - sizeof(name) - 1;
Otherwise LookupAccountSid is allowed to fill up the whole buffer, so that 'name' could not be appended.

3)
Indentation isn't consistent: it should be multiple of 4.

Sincerely yours,
Ivan

[1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa379166%28v=vs.85%29.aspx [2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa379554(v=vs.85).aspx

Issue:
  https://bugs.openjdk.java.net/browse/JDK-8081567

Thanks, Roger



Reply via email to