LookupAccountNameW() returns correct domain name length for not-so-well-known SIDs

Paul Bryan Roberts pbronline-wine at yahoo.co.uk
Fri Sep 26 05:52:09 CDT 2008


LookupAccountNameW() has a stubbed but non-empty, incomplete, buggy 
implementation.  It fails a number of unit tests but Wine code relies on 
this.

This is the THIRD of a series of NINE patches that provide what may be a 
reasonable first pass implementation of LookupAccountNameA() and 
LookupAccountNameW() that:

    - works for well known SIDs
    - works for 'first user account'
    - adds handling of 'first user account' to LookupAccountSid
    - passes existing units tests for LookupAccountName
    - corrects knock-on regression failures in the advapit32/security.c 
unit tests (there may be others elsewhere)
    - allows progress towards the resolution of Bug 14334

This was nasty.

This patch should have been done as two but whichever came first would 
have introduced regression.

These routines will return:
    - either the domain name and its length (not including the null 
terminator)
    - or the length, including the null terminator (so the caller can 
allocate enough memory to try again).

In this patch, LookupAccountNameW() returns the correct domain name 
length for not-so-well-known-SIDs and LookupAccountNameA() is changed so 
as to convert domain names from W to A correctly.  This corrects two 
units tests.

It also corrects two units tests for the well-known-SID case but this is 
misleading.  The code for well-known-SIDs isn't there and is technically 
even more broken than before.  This is addressed in the next patch.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0006-LookupAccountNameW-returns-correct-domainname-length.txt
Url: http://www.winehq.org/pipermail/wine-patches/attachments/20080926/910cecf2/attachment.txt 


More information about the wine-patches mailing list