"Ge van Geldorp" ge@gse.nl writes:
@@ -1055,15 +1056,86 @@ BOOLEAN WINAPI GetComputerObjectNameW( BOOLEAN WINAPI GetUserNameExA( EXTENDED_NAME_FORMAT NameFormat, LPSTR lpNameBuffer, PULONG nSize) {
- FIXME("%d %p %p\n", NameFormat, lpNameBuffer, nSize);
- return FALSE;
- BOOLEAN rc;
- LPWSTR bufferW = NULL;
- ULONG sizeW = *nSize;
- TRACE("(%d %p %p)\n", NameFormat, lpNameBuffer, nSize);
- if (lpNameBuffer) {
bufferW = HeapAlloc(GetProcessHeap(), 0, sizeW * sizeof(WCHAR));
if (bufferW == NULL) {
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
return FALSE;
}
- }
- rc = GetUserNameExW(NameFormat, bufferW, &sizeW);
- if (rc && bufferW) {
ULONG len = WideCharToMultiByte(CP_ACP, 0, bufferW, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, bufferW, -1, lpNameBuffer, *nSize, NULL, NULL);
*nSize = len;
- }
You need to check for buffer overflows and return the appropriate error, preferably with test cases.