mirror of
https://github.com/reactos/reactos.git
synced 2025-05-23 02:56:09 +00:00
Fix some handle leaks and warnings
svn path=/trunk/; revision=31496
This commit is contained in:
parent
6cda2ec675
commit
5df85cd5b2
4 changed files with 89 additions and 79 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue