Fix some handle leaks and warnings

svn path=/trunk/; revision=31496
This commit is contained in:
Thomas Bluemel 2007-12-29 21:40:31 +00:00
parent 6cda2ec675
commit 5df85cd5b2
4 changed files with 89 additions and 79 deletions

View file

@ -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;

View file

@ -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);
}

View file

@ -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;

View file

@ -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);