diff --git a/reactos/dll/win32/iphlpapi/ifenum_reactos.c b/reactos/dll/win32/iphlpapi/ifenum_reactos.c index b3066b13d36..5a10caab17c 100644 --- a/reactos/dll/win32/iphlpapi/ifenum_reactos.c +++ b/reactos/dll/win32/iphlpapi/ifenum_reactos.c @@ -99,6 +99,7 @@ NTSTATUS openTcpFile(PHANDLE tcpFile) { if (!NT_SUCCESS(status)) { ERR("openTcpFile for <%wZ> failed: 0x%lx\n", &fileName, status); + *tcpFile = INVALID_HANDLE_VALUE; } return status; @@ -106,7 +107,8 @@ NTSTATUS openTcpFile(PHANDLE tcpFile) { void closeTcpFile( HANDLE h ) { TRACE("called.\n"); - NtClose( h ); + ASSERT(h != INVALID_HANDLE_VALUE); + ZwClose( h ); } /* A generic thing-getting function which interacts in the right way with @@ -462,6 +464,7 @@ static DWORD getNumInterfacesInt(BOOL onlyNonLoopback) if( !NT_SUCCESS(status) ) { WARN("getNumInterfaces: failed %08x\n", status ); + closeTcpFile( tcpFile ); return 0; } @@ -550,7 +553,7 @@ NTSTATUS getInterfaceInfoByName( HANDLE tcpFile, char *name, IFInfo *info ) { if( NT_SUCCESS(status) ) for( i = 0; i < numInterfaces; i++ ) { - if( !strcmp(ifInfo[i].if_info.ent.if_descr, name) ) { + if( !strcmp((PCHAR)ifInfo[i].if_info.ent.if_descr, name) ) { memcpy( info, &ifInfo[i], sizeof(*info) ); break; } @@ -575,14 +578,14 @@ const char *getInterfaceNameByIndex(DWORD index) status = getInterfaceInfoByIndex( tcpFile, index, &ifInfo ); if( NT_SUCCESS(status) ) { - adapter_name = ifInfo.if_info.ent.if_descr; + adapter_name = (char *)ifInfo.if_info.ent.if_descr; interfaceName = HeapAlloc( GetProcessHeap(), 0, strlen(adapter_name) + 1 ); strcpy( interfaceName, adapter_name ); - - closeTcpFile( tcpFile ); } + + closeTcpFile( tcpFile ); } return interfaceName; @@ -603,8 +606,9 @@ DWORD getInterfaceIndexByName(const char *name, PDWORD index) if( NT_SUCCESS(status) ) { *index = ifInfo.if_info.ent.if_index; - closeTcpFile( tcpFile ); } + + closeTcpFile( tcpFile ); } return status; @@ -688,7 +692,7 @@ NTSTATUS getIPAddrEntryForIf(HANDLE tcpFile, DWORD getAddrByIndexOrName( char *name, DWORD index, IPHLPAddrType addrType ) { IFInfo ifInfo; - HANDLE tcpFile = INVALID_HANDLE_VALUE; + HANDLE tcpFile; NTSTATUS status = STATUS_SUCCESS; DWORD addrOut = INADDR_ANY; @@ -705,7 +709,7 @@ DWORD getAddrByIndexOrName( char *name, DWORD index, IPHLPAddrType addrType ) { case IFStatus: addrOut = ifInfo.if_info.ent.if_operstatus; break; } } - closeTcpFile( &tcpFile ); + closeTcpFile( tcpFile ); } return addrOut; diff --git a/reactos/dll/win32/iphlpapi/iphlpapi_main.c b/reactos/dll/win32/iphlpapi/iphlpapi_main.c index 19190b292f1..09555bc3bc0 100644 --- a/reactos/dll/win32/iphlpapi/iphlpapi_main.c +++ b/reactos/dll/win32/iphlpapi/iphlpapi_main.c @@ -604,13 +604,13 @@ DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen) unsigned long addr; RegQueryValueExA(hKey, "WinsServer", NULL, NULL, - primaryWINS.String, &size); + (PBYTE)primaryWINS.String, &size); addr = inet_addr(primaryWINS.String); if (addr != INADDR_NONE && addr != INADDR_ANY) winsEnabled = TRUE; size = sizeof(secondaryWINS.String); RegQueryValueExA(hKey, "BackupWinsServer", NULL, NULL, - secondaryWINS.String, &size); + (PBYTE)secondaryWINS.String, &size); addr = inet_addr(secondaryWINS.String); if (addr != INADDR_NONE && addr != INADDR_ANY) winsEnabled = TRUE; @@ -1390,7 +1390,7 @@ DWORD WINAPI GetNetworkParams(PFIXED_INFO pFixedInfo, PULONG pOutBufLen) { DWORD size = sizeof(pFixedInfo->ScopeId); - RegQueryValueExA(hKey, "ScopeID", NULL, NULL, pFixedInfo->ScopeId, &size); + RegQueryValueExA(hKey, "ScopeID", NULL, NULL, (PBYTE)pFixedInfo->ScopeId, &size); RegCloseKey(hKey); } diff --git a/reactos/dll/win32/iphlpapi/ipstats_reactos.c b/reactos/dll/win32/iphlpapi/ipstats_reactos.c index b9f60da526b..358c0218933 100644 --- a/reactos/dll/win32/iphlpapi/ipstats_reactos.c +++ b/reactos/dll/win32/iphlpapi/ipstats_reactos.c @@ -404,6 +404,7 @@ DWORD getNumRoutes(void) if( !NT_SUCCESS(status) ) { TRACE("failure: %08x\n", (int)status ); + closeTcpFile( tcpFile ); return 0; } @@ -414,6 +415,7 @@ DWORD getNumRoutes(void) status = tdiGetMibForIpEntity( tcpFile, &entitySet[i], &isnmp ); if( !NT_SUCCESS(status) ) { tdiFreeThingSet( entitySet ); + closeTcpFile( tcpFile ); return status; } numRoutes += isnmp.ipsi_numroutes; @@ -504,6 +506,8 @@ RouteTable *getRouteTable(void) routesAdded += snmpInfo.ipsi_numroutes; } + closeTcpFile( tcpFile ); + TRACE("Return: %08x, %08x\n", status, out_route_table); return out_route_table; @@ -607,6 +611,8 @@ PMIB_IPNETTABLE getArpTable(void) } } + closeTcpFile( tcpFile ); + tdiFreeThingSet( entitySet ); IpArpTable->dwNumEntries = row; diff --git a/reactos/dll/win32/iphlpapi/route_reactos.c b/reactos/dll/win32/iphlpapi/route_reactos.c index 3d8e565b181..bd68f95b58d 100644 --- a/reactos/dll/win32/iphlpapi/route_reactos.c +++ b/reactos/dll/win32/iphlpapi/route_reactos.c @@ -53,7 +53,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(iphlpapi); DWORD createIpForwardEntry( PMIB_IPFORWARDROW pRoute ) { - HANDLE tcpFile = INVALID_HANDLE_VALUE; + HANDLE tcpFile; NTSTATUS status = openTcpFile( &tcpFile ); TCP_REQUEST_SET_INFORMATION_EX_SAFELY_SIZED req = TCP_REQUEST_SET_INFORMATION_INIT; @@ -63,45 +63,45 @@ DWORD createIpForwardEntry( PMIB_IPFORWARDROW pRoute ) { TRACE("Called.\n"); - if( NT_SUCCESS(status) ) + if( NT_SUCCESS(status) ) { status = getNthIpEntity( tcpFile, 0, &id ); - if( NT_SUCCESS(status) ) { - req.Req.ID.toi_class = INFO_CLASS_PROTOCOL; - req.Req.ID.toi_type = INFO_TYPE_PROVIDER; - req.Req.ID.toi_id = IP_MIB_ROUTETABLE_ENTRY_ID; - req.Req.ID.toi_entity = id; - req.Req.BufferSize = sizeof(*rte); - rte = - (IPRouteEntry *)&req.Req.Buffer[0]; + if( NT_SUCCESS(status) ) { + req.Req.ID.toi_class = INFO_CLASS_PROTOCOL; + req.Req.ID.toi_type = INFO_TYPE_PROVIDER; + req.Req.ID.toi_id = IP_MIB_ROUTETABLE_ENTRY_ID; + req.Req.ID.toi_entity = id; + req.Req.BufferSize = sizeof(*rte); + rte = + (IPRouteEntry *)&req.Req.Buffer[0]; - // dwForwardPolicy - // dwForwardNextHopAS - rte->ire_dest = pRoute->dwForwardDest; - rte->ire_mask = pRoute->dwForwardMask; - rte->ire_gw = pRoute->dwForwardNextHop; - rte->ire_index = pRoute->dwForwardIfIndex; - rte->ire_type = IP_FORWARD_ADD; - rte->ire_proto = pRoute->dwForwardProto; - rte->ire_age = pRoute->dwForwardAge; - rte->ire_metric1 = pRoute->dwForwardMetric1; - rte->ire_metric2 = pRoute->dwForwardMetric2; - rte->ire_metric3 = pRoute->dwForwardMetric3; - rte->ire_metric4 = pRoute->dwForwardMetric4; - rte->ire_metric5 = pRoute->dwForwardMetric5; + // dwForwardPolicy + // dwForwardNextHopAS + rte->ire_dest = pRoute->dwForwardDest; + rte->ire_mask = pRoute->dwForwardMask; + rte->ire_gw = pRoute->dwForwardNextHop; + rte->ire_index = pRoute->dwForwardIfIndex; + rte->ire_type = IP_FORWARD_ADD; + rte->ire_proto = pRoute->dwForwardProto; + rte->ire_age = pRoute->dwForwardAge; + rte->ire_metric1 = pRoute->dwForwardMetric1; + rte->ire_metric2 = pRoute->dwForwardMetric2; + rte->ire_metric3 = pRoute->dwForwardMetric3; + rte->ire_metric4 = pRoute->dwForwardMetric4; + rte->ire_metric5 = pRoute->dwForwardMetric5; - status = DeviceIoControl( tcpFile, - IOCTL_TCP_SET_INFORMATION_EX, - &req, - sizeof(req), - NULL, - 0, - &returnSize, - NULL ); - } + status = DeviceIoControl( tcpFile, + IOCTL_TCP_SET_INFORMATION_EX, + &req, + sizeof(req), + NULL, + 0, + &returnSize, + NULL ); + } - if( tcpFile != INVALID_HANDLE_VALUE ) closeTcpFile( tcpFile ); + } TRACE("Returning: %08x (IOCTL was %08x)\n", status, IOCTL_TCP_SET_INFORMATION_EX); @@ -117,7 +117,7 @@ DWORD setIpForwardEntry( PMIB_IPFORWARDROW pRoute ) { } DWORD deleteIpForwardEntry( PMIB_IPFORWARDROW pRoute ) { - HANDLE tcpFile = INVALID_HANDLE_VALUE; + HANDLE tcpFile; NTSTATUS status = openTcpFile( &tcpFile ); TCP_REQUEST_SET_INFORMATION_EX_SAFELY_SIZED req = TCP_REQUEST_SET_INFORMATION_INIT; @@ -127,45 +127,45 @@ DWORD deleteIpForwardEntry( PMIB_IPFORWARDROW pRoute ) { TRACE("Called.\n"); - if( NT_SUCCESS(status) ) + if( NT_SUCCESS(status) ) { status = getNthIpEntity( tcpFile, 0, &id ); - if( NT_SUCCESS(status) ) { - req.Req.ID.toi_class = INFO_CLASS_PROTOCOL; - req.Req.ID.toi_type = INFO_TYPE_PROVIDER; - req.Req.ID.toi_id = IP_MIB_ROUTETABLE_ENTRY_ID; - req.Req.ID.toi_entity = id; - req.Req.BufferSize = sizeof(*rte); - rte = - (IPRouteEntry *)&req.Req.Buffer[0]; + if( NT_SUCCESS(status) ) { + req.Req.ID.toi_class = INFO_CLASS_PROTOCOL; + req.Req.ID.toi_type = INFO_TYPE_PROVIDER; + req.Req.ID.toi_id = IP_MIB_ROUTETABLE_ENTRY_ID; + req.Req.ID.toi_entity = id; + req.Req.BufferSize = sizeof(*rte); + rte = + (IPRouteEntry *)&req.Req.Buffer[0]; - // dwForwardPolicy - // dwForwardNextHopAS - rte->ire_dest = pRoute->dwForwardDest; - rte->ire_mask = INADDR_NONE; - rte->ire_gw = pRoute->dwForwardNextHop; - rte->ire_index = pRoute->dwForwardIfIndex; - rte->ire_type = IP_FORWARD_DEL; - rte->ire_proto = pRoute->dwForwardProto; - rte->ire_age = pRoute->dwForwardAge; - rte->ire_metric1 = pRoute->dwForwardMetric1; - rte->ire_metric2 = INADDR_NONE; - rte->ire_metric3 = INADDR_NONE; - rte->ire_metric4 = INADDR_NONE; - rte->ire_metric5 = INADDR_NONE; + // dwForwardPolicy + // dwForwardNextHopAS + rte->ire_dest = pRoute->dwForwardDest; + rte->ire_mask = INADDR_NONE; + rte->ire_gw = pRoute->dwForwardNextHop; + rte->ire_index = pRoute->dwForwardIfIndex; + rte->ire_type = IP_FORWARD_DEL; + rte->ire_proto = pRoute->dwForwardProto; + rte->ire_age = pRoute->dwForwardAge; + rte->ire_metric1 = pRoute->dwForwardMetric1; + rte->ire_metric2 = INADDR_NONE; + rte->ire_metric3 = INADDR_NONE; + rte->ire_metric4 = INADDR_NONE; + rte->ire_metric5 = INADDR_NONE; - status = DeviceIoControl( tcpFile, - IOCTL_TCP_SET_INFORMATION_EX, - &req, - sizeof(req), - NULL, - 0, - &returnSize, - NULL ); - } + status = DeviceIoControl( tcpFile, + IOCTL_TCP_SET_INFORMATION_EX, + &req, + sizeof(req), + NULL, + 0, + &returnSize, + NULL ); + } - if( tcpFile != INVALID_HANDLE_VALUE ) closeTcpFile( tcpFile ); + } TRACE("Returning: %08x (IOCTL was %08x)\n", status, IOCTL_TCP_SET_INFORMATION_EX);