From 6da373e9fdce443d8fce31820a8365ed95b2f475 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sat, 11 Oct 2008 19:30:45 +0000 Subject: [PATCH] - Fix MultiByteToWideChar api parameters (thanks Christoph) - Fix bugs in EnumNameServers svn path=/trunk/; revision=36722 --- reactos/dll/win32/iphlpapi/iphlpapi_main.c | 7 ++----- reactos/dll/win32/iphlpapi/resinfo_reactos.c | 7 ++++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/reactos/dll/win32/iphlpapi/iphlpapi_main.c b/reactos/dll/win32/iphlpapi/iphlpapi_main.c index 4d506b5f2ba..a287f9f735c 100644 --- a/reactos/dll/win32/iphlpapi/iphlpapi_main.c +++ b/reactos/dll/win32/iphlpapi/iphlpapi_main.c @@ -1471,14 +1471,11 @@ DWORD WINAPI GetNumberOfInterfaces(PDWORD pdwNumIf) * DWORD * */ -static void CreateNameServerListEnumNamesFunc( PWCHAR Interface, - PWCHAR Server, - PVOID Data ) +static void CreateNameServerListEnumNamesFunc( PWCHAR Interface, PWCHAR Server, PVOID Data) { IP_ADDR_STRING *pNext; PNAME_SERVER_LIST_CONTEXT Context = (PNAME_SERVER_LIST_CONTEXT)Data; - if (!Context->NumServers) { if (Context->uSizeAvailable >= Context->uSizeRequired) @@ -1518,7 +1515,7 @@ DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterIn if (!ifName) return ERROR_INVALID_PARAMETER; - MultiByteToWideChar(CP_ACP, 0, ifName, -1, &keyname[62], sizeof(keyname) - (63 * sizeof(WCHAR))); + MultiByteToWideChar(CP_ACP, 0, ifName, -1, &keyname[62], sizeof(keyname)/sizeof(WCHAR) - 63); HeapFree(GetProcessHeap(), 0, (LPVOID)ifName); if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, keyname, 0, KEY_READ, &hkey) != ERROR_SUCCESS) diff --git a/reactos/dll/win32/iphlpapi/resinfo_reactos.c b/reactos/dll/win32/iphlpapi/resinfo_reactos.c index b7e631f4175..c20a8fe32d5 100644 --- a/reactos/dll/win32/iphlpapi/resinfo_reactos.c +++ b/reactos/dll/win32/iphlpapi/resinfo_reactos.c @@ -136,19 +136,20 @@ void EnumNameServers( HANDLE RegHandle, PWCHAR Interface, malloc(((ch - LastNameStart) + 1) * sizeof(WCHAR)); if (NameServer) { memcpy(NameServer,NameServerString + LastNameStart, - (ch - LastNameStart) * sizeof(WCHAR)); + (ch - LastNameStart) * sizeof(WCHAR)); NameServer[ch - LastNameStart] = 0; cb( Interface, NameServer, Data ); free(NameServer); + LastNameStart = ch +1; } } LastNameStart = ch + 1; /* The first one after the comma */ } } if (ch - LastNameStart > 0) { /* A last name? */ - PWCHAR NameServer = malloc(ch - LastNameStart + 1); + PWCHAR NameServer = malloc(((ch - LastNameStart) + 1) * sizeof(WCHAR)); memcpy(NameServer,NameServerString + LastNameStart, - (ch - LastNameStart)); + (ch - LastNameStart) * sizeof(WCHAR)); NameServer[ch - LastNameStart] = 0; cb( Interface, NameServer, Data ); free(NameServer);