diff --git a/reactos/dll/win32/iphlpapi/address.c b/reactos/dll/win32/iphlpapi/address.c index 9cf3af34015..e340a321817 100644 --- a/reactos/dll/win32/iphlpapi/address.c +++ b/reactos/dll/win32/iphlpapi/address.c @@ -306,7 +306,7 @@ GetAdaptersAddresses( ZeroMemory(Ptr, RemainingSize); /* open the tcpip driver */ - Status = openTcpFile(&TcpFile); + Status = openTcpFile(&TcpFile, FILE_READ_DATA); if (!NT_SUCCESS(Status)) { ERR("Could not open handle to tcpip.sys. Status %08x\n", Status); diff --git a/reactos/dll/win32/iphlpapi/ifenum_reactos.c b/reactos/dll/win32/iphlpapi/ifenum_reactos.c index fcaa9d026b3..695484837fa 100644 --- a/reactos/dll/win32/iphlpapi/ifenum_reactos.c +++ b/reactos/dll/win32/iphlpapi/ifenum_reactos.c @@ -225,7 +225,7 @@ static DWORD getNumInterfacesInt(BOOL onlyNonLoopback) NTSTATUS status; int i; - status = openTcpFile( &tcpFile ); + status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( !NT_SUCCESS(status) ) { WARN("getNumInterfaces: failed %08x\n", status ); @@ -350,7 +350,7 @@ const char *getInterfaceNameByIndex(DWORD index) IFInfo ifInfo; HANDLE tcpFile; char *interfaceName = 0, *adapter_name = 0; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( NT_SUCCESS(status) ) { status = getInterfaceInfoByIndex( tcpFile, index, &ifInfo ); @@ -379,7 +379,7 @@ DWORD getInterfaceIndexByName(const char *name, PDWORD index) { IFInfo ifInfo; HANDLE tcpFile; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( NT_SUCCESS(status) ) { status = getInterfaceInfoByName( tcpFile, (char *)name, &ifInfo ); @@ -400,7 +400,7 @@ InterfaceIndexTable *getInterfaceIndexTableInt( BOOL nonLoopbackOnly ) { IFInfo *ifInfo; InterfaceIndexTable *ret = 0; HANDLE tcpFile; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( NT_SUCCESS(status) ) { status = getInterfaceInfoSet( tcpFile, &ifInfo, &numInterfaces ); @@ -476,7 +476,7 @@ DWORD getAddrByIndexOrName( char *name, DWORD index, IPHLPAddrType addrType ) { NTSTATUS status = STATUS_SUCCESS; DWORD addrOut = INADDR_ANY; - status = openTcpFile( &tcpFile ); + status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( NT_SUCCESS(status) ) { status = getIPAddrEntryForIf( tcpFile, name, index, &ifInfo ); @@ -527,7 +527,7 @@ DWORD getInterfacePhysicalByName(const char *name, PDWORD len, PBYTE addr, { HANDLE tcpFile; IFInfo info; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( NT_SUCCESS(status) ) { status = getInterfaceInfoByName( tcpFile, (char *)name, &info ); @@ -544,7 +544,7 @@ DWORD getInterfacePhysicalByIndex(DWORD index, PDWORD len, PBYTE addr, { HANDLE tcpFile; IFInfo info; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( NT_SUCCESS(status) ) { status = getInterfaceInfoByIndex( tcpFile, index, &info ); @@ -581,7 +581,7 @@ DWORD getInterfaceEntryByName(const char *name, PMIB_IFROW entry) { HANDLE tcpFile; IFInfo info; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA ); TRACE("Called.\n"); @@ -606,7 +606,7 @@ DWORD getInterfaceEntryByIndex(DWORD index, PMIB_IFROW entry) { HANDLE tcpFile; IFInfo info; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA ); TRACE("Called.\n"); @@ -641,7 +641,7 @@ NTSTATUS addIPAddress( IPAddr Address, IPMask Mask, DWORD IfIndex, PULONG NteContext, PULONG NteInstance ) { HANDLE tcpFile; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA | FILE_WRITE_DATA ); IP_SET_DATA Data; IO_STATUS_BLOCK Iosb; @@ -682,7 +682,7 @@ NTSTATUS addIPAddress( IPAddr Address, IPMask Mask, DWORD IfIndex, NTSTATUS deleteIpAddress( ULONG NteContext ) { HANDLE tcpFile; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA | FILE_WRITE_DATA ); IO_STATUS_BLOCK Iosb; TRACE("Called.\n"); diff --git a/reactos/dll/win32/iphlpapi/iphlpapi_main.c b/reactos/dll/win32/iphlpapi/iphlpapi_main.c index d7cfa5bbd45..9cfcd0d1a5e 100644 --- a/reactos/dll/win32/iphlpapi/iphlpapi_main.c +++ b/reactos/dll/win32/iphlpapi/iphlpapi_main.c @@ -2145,7 +2145,7 @@ DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW pArpEntry) if (!pArpEntry) return ERROR_INVALID_PARAMETER; - if (!NT_SUCCESS(openTcpFile( &tcpFile ))) + if (!NT_SUCCESS(openTcpFile( &tcpFile, FILE_READ_DATA | FILE_WRITE_DATA ))) return ERROR_NOT_SUPPORTED; if (!NT_SUCCESS(getNthIpEntity( tcpFile, pArpEntry->dwIndex, &id ))) @@ -2312,7 +2312,7 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetAdaptersAddresses(ULONG Family,ULONG Flags,PVO if (!indexTable) return ERROR_NOT_ENOUGH_MEMORY; - ret = openTcpFile(&tcpFile); + ret = openTcpFile(&tcpFile, FILE_READ_DATA); if (!NT_SUCCESS(ret)) return ERROR_NO_DATA; diff --git a/reactos/dll/win32/iphlpapi/ipstats_reactos.c b/reactos/dll/win32/iphlpapi/ipstats_reactos.c index 656e00a87de..e416d4842b8 100644 --- a/reactos/dll/win32/iphlpapi/ipstats_reactos.c +++ b/reactos/dll/win32/iphlpapi/ipstats_reactos.c @@ -366,7 +366,7 @@ DWORD getNumRoutes(void) TRACE("called.\n"); - status = openTcpFile( &tcpFile ); + status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( !NT_SUCCESS(status) ) { TRACE("failure: %08x\n", (int)status ); @@ -421,7 +421,7 @@ RouteTable *getRouteTable(void) DWORD numRoutes = getNumRoutes(), routesAdded = 0; TDIEntityID ent; HANDLE tcpFile; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA ); int i; if( !NT_SUCCESS(status) ) @@ -498,7 +498,7 @@ DWORD getNumArpEntries(void) TRACE("called.\n"); - status = openTcpFile( &tcpFile ); + status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( !NT_SUCCESS(status) ) { TRACE("failure: %08x\n", (int)status ); @@ -550,7 +550,7 @@ PMIB_IPNETTABLE getArpTable(void) totalNumber = getNumArpEntries(); - status = openTcpFile( &tcpFile ); + status = openTcpFile( &tcpFile, FILE_READ_DATA ); if( !NT_SUCCESS(status) ) { TRACE("failure: %08x\n", (int)status ); diff --git a/reactos/dll/win32/iphlpapi/route_reactos.c b/reactos/dll/win32/iphlpapi/route_reactos.c index 350604477de..dab80de187b 100644 --- a/reactos/dll/win32/iphlpapi/route_reactos.c +++ b/reactos/dll/win32/iphlpapi/route_reactos.c @@ -31,7 +31,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(iphlpapi); DWORD createIpForwardEntry( PMIB_IPFORWARDROW pRoute ) { HANDLE tcpFile; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA | FILE_WRITE_DATA ); TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY req = TCP_REQUEST_SET_INFORMATION_INIT; IPRouteEntry *rte; @@ -96,7 +96,7 @@ DWORD setIpForwardEntry( PMIB_IPFORWARDROW pRoute ) { DWORD deleteIpForwardEntry( PMIB_IPFORWARDROW pRoute ) { HANDLE tcpFile; - NTSTATUS status = openTcpFile( &tcpFile ); + NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA | FILE_WRITE_DATA ); TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY req = TCP_REQUEST_SET_INFORMATION_INIT; IPRouteEntry *rte; diff --git a/reactos/dll/win32/wshtcpip/wshtcpip.c b/reactos/dll/win32/wshtcpip/wshtcpip.c index 80585992f55..0aeab38d281 100644 --- a/reactos/dll/win32/wshtcpip/wshtcpip.c +++ b/reactos/dll/win32/wshtcpip/wshtcpip.c @@ -391,7 +391,7 @@ SendRequest( HANDLE TcpCC; DWORD BytesReturned; - if (openTcpFile(&TcpCC) != STATUS_SUCCESS) + if (openTcpFile(&TcpCC, FILE_READ_DATA | FILE_WRITE_DATA) != STATUS_SUCCESS) return WSAEINVAL; Status = DeviceIoControl(TcpCC, @@ -449,7 +449,7 @@ WSHNotify( case WSH_NOTIFY_BIND: DPRINT("WSHNotify: WSH_NOTIFY_BIND\n"); - Status = openTcpFile(&TcpCC); + Status = openTcpFile(&TcpCC, FILE_READ_DATA); if (Status != STATUS_SUCCESS) return WSAEINVAL; diff --git a/reactos/lib/tdilib/enum.c b/reactos/lib/tdilib/enum.c index c3122ad3d13..7b36d4bcb94 100644 --- a/reactos/lib/tdilib/enum.c +++ b/reactos/lib/tdilib/enum.c @@ -26,7 +26,7 @@ NTSTATUS tdiGetSetOfThings( HANDLE tcpFile, DWORD toiType, DWORD toiId, DWORD teiEntity, - DWORD teiInstance, + DWORD teiInstance, DWORD fixedPart, DWORD entrySize, PVOID *tdiEntitySet, @@ -113,7 +113,7 @@ NTSTATUS tdiGetEntityIDSet( HANDLE tcpFile, INFO_TYPE_PROVIDER, ENTITY_LIST_ID, GENERIC_ENTITY, - 0, + 0, 0, sizeof(TDIEntityID), (PVOID *)entitySet, diff --git a/reactos/lib/tdilib/handle.c b/reactos/lib/tdilib/handle.c index 575c04a6c3b..f7f463faea4 100644 --- a/reactos/lib/tdilib/handle.c +++ b/reactos/lib/tdilib/handle.c @@ -9,7 +9,7 @@ const PWCHAR TcpFileName = L"\\Device\\Tcp"; -NTSTATUS openTcpFile(PHANDLE tcpFile) +NTSTATUS openTcpFile(PHANDLE tcpFile, ACCESS_MASK DesiredAccess) { UNICODE_STRING fileName; OBJECT_ATTRIBUTES objectAttributes; @@ -24,18 +24,12 @@ NTSTATUS openTcpFile(PHANDLE tcpFile) NULL, NULL ); - status = ZwCreateFile( tcpFile, - SYNCHRONIZE | GENERIC_EXECUTE | - GENERIC_READ | GENERIC_WRITE, - &objectAttributes, - &ioStatusBlock, - NULL, - FILE_ATTRIBUTE_NORMAL, - FILE_SHARE_READ | FILE_SHARE_WRITE, - FILE_OPEN_IF, - FILE_SYNCHRONOUS_IO_NONALERT, - 0, - 0 ); + status = NtOpenFile( tcpFile, + DesiredAccess | SYNCHRONIZE, + &objectAttributes, + &ioStatusBlock, + FILE_SHARE_READ | FILE_SHARE_WRITE, + FILE_SYNCHRONOUS_IO_NONALERT); /* String does not need to be freed: it points to the constant * string we provided */ diff --git a/reactos/lib/tdilib/tdilib.h b/reactos/lib/tdilib/tdilib.h index 1cd367d1a37..7d32845550a 100644 --- a/reactos/lib/tdilib/tdilib.h +++ b/reactos/lib/tdilib/tdilib.h @@ -7,7 +7,7 @@ #pragma once -NTSTATUS openTcpFile(PHANDLE tcpFile); +NTSTATUS openTcpFile(PHANDLE tcpFile, ACCESS_MASK DesiredAccess); VOID closeTcpFile(HANDLE tcpFile); NTSTATUS tdiGetEntityIDSet( HANDLE tcpFile, TDIEntityID **entitySet, PDWORD numEntities );