Author: weiden Date: Sun Dec 30 00:40:31 2007 New Revision: 31496
URL: http://svn.reactos.org/svn/reactos?rev=31496&view=rev Log: Fix some handle leaks and warnings
Modified: trunk/reactos/dll/win32/iphlpapi/ifenum_reactos.c trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c trunk/reactos/dll/win32/iphlpapi/ipstats_reactos.c trunk/reactos/dll/win32/iphlpapi/route_reactos.c
Modified: trunk/reactos/dll/win32/iphlpapi/ifenum_reactos.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iphlpapi/ifenum_r... ============================================================================== --- trunk/reactos/dll/win32/iphlpapi/ifenum_reactos.c (original) +++ trunk/reactos/dll/win32/iphlpapi/ifenum_reactos.c Sun Dec 30 00:40:31 2007 @@ -99,6 +99,7 @@
if (!NT_SUCCESS(status)) { ERR("openTcpFile for <%wZ> failed: 0x%lx\n", &fileName, status); + *tcpFile = INVALID_HANDLE_VALUE; }
return status; @@ -106,7 +107,8 @@
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 @@
if( !NT_SUCCESS(status) ) { WARN("getNumInterfaces: failed %08x\n", status ); + closeTcpFile( tcpFile ); return 0; }
@@ -550,7 +553,7 @@
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 @@ 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 @@
if( NT_SUCCESS(status) ) { *index = ifInfo.if_info.ent.if_index; - closeTcpFile( tcpFile ); - } + } + + closeTcpFile( tcpFile ); }
return status; @@ -688,7 +692,7 @@
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 @@ case IFStatus: addrOut = ifInfo.if_info.ent.if_operstatus; break; } } - closeTcpFile( &tcpFile ); + closeTcpFile( tcpFile ); }
return addrOut;
Modified: trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iphlpapi/iphlpapi... ============================================================================== --- trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c (original) +++ trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c Sun Dec 30 00:40:31 2007 @@ -604,13 +604,13 @@ 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 size = sizeof(pFixedInfo->ScopeId);
- RegQueryValueExA(hKey, "ScopeID", NULL, NULL, pFixedInfo->ScopeId, &size); + RegQueryValueExA(hKey, "ScopeID", NULL, NULL, (PBYTE)pFixedInfo->ScopeId, &size); RegCloseKey(hKey); }
Modified: trunk/reactos/dll/win32/iphlpapi/ipstats_reactos.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iphlpapi/ipstats_... ============================================================================== --- trunk/reactos/dll/win32/iphlpapi/ipstats_reactos.c (original) +++ trunk/reactos/dll/win32/iphlpapi/ipstats_reactos.c Sun Dec 30 00:40:31 2007 @@ -404,6 +404,7 @@
if( !NT_SUCCESS(status) ) { TRACE("failure: %08x\n", (int)status ); + closeTcpFile( tcpFile ); return 0; }
@@ -414,6 +415,7 @@ status = tdiGetMibForIpEntity( tcpFile, &entitySet[i], &isnmp ); if( !NT_SUCCESS(status) ) { tdiFreeThingSet( entitySet ); + closeTcpFile( tcpFile ); return status; } numRoutes += isnmp.ipsi_numroutes; @@ -504,6 +506,8 @@ routesAdded += snmpInfo.ipsi_numroutes; }
+ closeTcpFile( tcpFile ); + TRACE("Return: %08x, %08x\n", status, out_route_table);
return out_route_table; @@ -606,6 +610,8 @@ if( AdapterArpTable ) tdiFreeThingSet( AdapterArpTable ); } } + + closeTcpFile( tcpFile );
tdiFreeThingSet( entitySet ); IpArpTable->dwNumEntries = row;
Modified: trunk/reactos/dll/win32/iphlpapi/route_reactos.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iphlpapi/route_re... ============================================================================== --- trunk/reactos/dll/win32/iphlpapi/route_reactos.c (original) +++ trunk/reactos/dll/win32/iphlpapi/route_reactos.c Sun Dec 30 00:40:31 2007 @@ -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 @@
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 ); + } + + closeTcpFile( tcpFile ); } - - 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 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 @@
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 ); + } + + closeTcpFile( tcpFile ); } - - if( tcpFile != INVALID_HANDLE_VALUE ) - closeTcpFile( tcpFile );
TRACE("Returning: %08x (IOCTL was %08x)\n", status, IOCTL_TCP_SET_INFORMATION_EX);