diff --git a/dlls/kernel/comm.c b/dlls/kernel/comm.c index bd85bcd5e2d..36a0f03c34c 100644 --- a/dlls/kernel/comm.c +++ b/dlls/kernel/comm.c @@ -701,7 +701,7 @@ BOOL WINAPI SetCommBreak( #if defined(TIOCSBRK) && defined(TIOCCBRK) /* check if available for compilation */ int fd,result; - fd = get_comm_fd( handle, GENERIC_READ ); + fd = get_comm_fd( handle, FILE_READ_DATA ); if(fd<0) return FALSE; result = ioctl(fd,TIOCSBRK,0); release_comm_fd( handle, fd ); @@ -738,7 +738,7 @@ BOOL WINAPI ClearCommBreak( #if defined(TIOCSBRK) && defined(TIOCCBRK) /* check if available for compilation */ int fd,result; - fd = get_comm_fd( handle, GENERIC_READ ); + fd = get_comm_fd( handle, FILE_READ_DATA ); if(fd<0) return FALSE; result = ioctl(fd,TIOCCBRK,0); release_comm_fd( handle, fd ); @@ -775,7 +775,7 @@ BOOL WINAPI EscapeCommFunction( struct termios port; TRACE("handle %p, function=%d\n", handle, nFunction); - fd = get_comm_fd( handle, GENERIC_READ ); + fd = get_comm_fd( handle, FILE_READ_DATA ); if(fd<0) return FALSE; if (tcgetattr(fd,&port) == -1) { @@ -889,7 +889,7 @@ BOOL WINAPI PurgeComm( TRACE("handle %p, flags %lx\n", handle, flags); - fd = get_comm_fd( handle, GENERIC_READ ); + fd = get_comm_fd( handle, FILE_READ_DATA ); if(fd<0) return FALSE; /* @@ -927,7 +927,7 @@ BOOL WINAPI ClearCommError( { int fd; - fd=get_comm_fd( handle, GENERIC_READ ); + fd=get_comm_fd( handle, FILE_READ_DATA ); if(0>fd) return FALSE; if (lpStat) @@ -987,7 +987,7 @@ BOOL WINAPI SetupComm( int fd; FIXME("insize %ld outsize %ld unimplemented stub\n", insize, outsize); - fd=get_comm_fd( handle, GENERIC_READ ); + fd=get_comm_fd( handle, FILE_READ_DATA ); if(0>fd) return FALSE; release_comm_fd( handle, fd ); return TRUE; @@ -1085,7 +1085,7 @@ BOOL WINAPI SetCommState( lpdcb->fDtrControl); - fd = get_comm_fd( handle, GENERIC_READ ); + fd = get_comm_fd( handle, FILE_READ_DATA ); if (fd < 0) return FALSE; if ((tcgetattr(fd,&port)) == -1) { @@ -1488,7 +1488,7 @@ BOOL WINAPI GetCommState( TRACE("handle %p, ptr %p\n", handle, lpdcb); - fd = get_comm_fd( handle, GENERIC_READ ); + fd = get_comm_fd( handle, FILE_READ_DATA ); if (fd < 0) return FALSE; if (tcgetattr(fd, &port) == -1) { int save_error=errno; @@ -1821,7 +1821,7 @@ BOOL WINAPI SetCommTimeouts( if (!ret) return FALSE; /* FIXME: move this stuff to the server */ - fd = get_comm_fd( hComm, GENERIC_READ ); + fd = get_comm_fd( hComm, FILE_READ_DATA ); if (fd < 0) return FALSE; if (-1==tcgetattr(fd,&tios)) { @@ -1876,7 +1876,7 @@ BOOL WINAPI GetCommModemStatus( *lpModemStat=0; #ifdef TIOCMGET - fd = get_comm_fd( hFile, GENERIC_READ ); + fd = get_comm_fd( hFile, FILE_READ_DATA ); if(fd<0) return FALSE; result = ioctl(fd, TIOCMGET, &mstat); @@ -1980,7 +1980,7 @@ static DWORD WINAPI COMM_WaitCommEventService(LPVOID arg) serial_irq_info new_irq_info; DWORD new_mstat, new_evtmask; - fd=get_comm_fd( commio->handle, GENERIC_READ ); + fd=get_comm_fd( commio->handle, FILE_READ_DATA ); TRACE("handle %p fd 0x%08x, mask 0x%08lx buffer %p event %p irq_info %p waitmask 0x%08x\n", commio->handle, fd, commio->evtmask, commio->buffer, commio->hEvent, &commio->irq_info, waitmask); @@ -2038,7 +2038,7 @@ static BOOL COMM_WaitCommEvent( if (NtResetEvent(lpOverlapped->hEvent,NULL)) return FALSE; - fd = get_comm_fd( hFile, GENERIC_WRITE ); + fd = get_comm_fd( hFile, FILE_WRITE_DATA ); if (fd < 0) return FALSE; commio = HeapAlloc(GetProcessHeap(), 0, sizeof (async_commio)); diff --git a/dlls/kernel/sync.c b/dlls/kernel/sync.c index 6158a990084..1f93efe1e74 100644 --- a/dlls/kernel/sync.c +++ b/dlls/kernel/sync.c @@ -1202,7 +1202,7 @@ BOOL WINAPI PeekNamedPipe( HANDLE hPipe, LPVOID lpvBuffer, DWORD cbBuffer, TRACE("(%p,%p,%lu,%p,%p,%p)\n", hPipe, lpvBuffer, cbBuffer, lpcbRead, lpcbAvail, lpcbMessage); - ret = wine_server_handle_to_fd( hPipe, GENERIC_READ, &fd, &flags ); + ret = wine_server_handle_to_fd( hPipe, FILE_READ_DATA, &fd, &flags ); if (ret) { SetLastError( RtlNtStatusToDosError(ret) ); diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index 023674d6123..291e2a873c0 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -1153,7 +1153,7 @@ NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event, return io->u.Status = STATUS_NOT_IMPLEMENTED; } - if ((io->u.Status = wine_server_handle_to_fd( handle, GENERIC_READ, &fd, NULL )) != STATUS_SUCCESS) + if ((io->u.Status = wine_server_handle_to_fd( handle, FILE_LIST_DIRECTORY, &fd, NULL )) != STATUS_SUCCESS) return io->u.Status; io->Information = 0; diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index f9363fab35f..17c4ba06c34 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -491,7 +491,7 @@ NTSTATUS WINAPI NtReadFile(HANDLE hFile, HANDLE hEvent, if (!io_status) return STATUS_ACCESS_VIOLATION; io_status->Information = 0; - io_status->u.Status = wine_server_handle_to_fd( hFile, GENERIC_READ, &unix_handle, &flags ); + io_status->u.Status = wine_server_handle_to_fd( hFile, FILE_READ_DATA, &unix_handle, &flags ); if (io_status->u.Status) return io_status->u.Status; if (flags & FD_FLAG_RECV_SHUTDOWN) @@ -713,7 +713,7 @@ NTSTATUS WINAPI NtWriteFile(HANDLE hFile, HANDLE hEvent, if (!io_status) return STATUS_ACCESS_VIOLATION; io_status->Information = 0; - io_status->u.Status = wine_server_handle_to_fd( hFile, GENERIC_WRITE, &unix_handle, &flags ); + io_status->u.Status = wine_server_handle_to_fd( hFile, FILE_WRITE_DATA, &unix_handle, &flags ); if (io_status->u.Status) return io_status->u.Status; if (flags & FD_FLAG_SEND_SHUTDOWN) diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index e2647cafdfe..88c00156fa6 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -484,11 +484,6 @@ int wine_server_handle_to_fd( obj_handle_t handle, unsigned int access, int *uni obj_handle_t fd_handle; int ret, removable = -1, fd = -1; - /* FIXME: callers should be fixed to pass the appropriate specific rights */ - if (access & GENERIC_READ) access |= FILE_READ_DATA; - if (access & GENERIC_WRITE) access |= FILE_WRITE_DATA; - access &= ~(GENERIC_READ|GENERIC_WRITE); - RtlEnterCriticalSection( &fd_cache_section ); *unix_fd = -1; diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index d04c79ed0d3..f3984f0992e 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -1763,8 +1763,8 @@ NTSTATUS WINAPI NtMapViewOfSection( HANDLE handle, HANDLE process, PVOID *addr_p { int shared_fd; - if ((res = wine_server_handle_to_fd( shared_file, GENERIC_READ, &shared_fd, - NULL ))) goto done; + if ((res = wine_server_handle_to_fd( shared_file, FILE_READ_DATA|FILE_WRITE_DATA, + &shared_fd, NULL ))) goto done; res = map_image( handle, unix_handle, base, size_low, header_size, shared_fd, removable, addr_ptr ); wine_server_release_fd( shared_file, shared_fd ); diff --git a/dlls/winedos/int13.c b/dlls/winedos/int13.c index 88ef29b5d34..7f5ba458d8c 100644 --- a/dlls/winedos/int13.c +++ b/dlls/winedos/int13.c @@ -125,7 +125,7 @@ static void INT13_ReadFloppyParams( CONTEXT86 *context ) h = CreateFileW(drive_root, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); if (h == INVALID_HANDLE_VALUE || - wine_server_handle_to_fd(h, GENERIC_READ, &floppy_fd, NULL)) + wine_server_handle_to_fd(h, FILE_READ_DATA, &floppy_fd, NULL)) { WARN("Can't determine floppy geometry !\n"); INT13_SetStatus( context, 0x07 ); /* drive parameter activity failed */ diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c index 2fc7d3741e7..75de7f56f15 100644 --- a/dlls/winsock/socket.c +++ b/dlls/winsock/socket.c @@ -1580,7 +1580,7 @@ SOCKET WINAPI WS_accept(SOCKET s, struct WS_sockaddr *addr, do { if (is_blocking) { - int fd = get_sock_fd( s, GENERIC_READ, NULL ); + int fd = get_sock_fd( s, FILE_READ_DATA, NULL ); if (fd == -1) return INVALID_SOCKET; /* block here */ do_block(fd, POLLIN, -1); @@ -1681,7 +1681,7 @@ int WINAPI WS_closesocket(SOCKET s) */ int WINAPI WS_connect(SOCKET s, const struct WS_sockaddr* name, int namelen) { - int fd = get_sock_fd( s, GENERIC_READ, NULL ); + int fd = get_sock_fd( s, FILE_READ_DATA, NULL ); TRACE("socket %04x, ptr %p %s, length %d\n", s, name, debugstr_sockaddr(name), namelen); @@ -2346,7 +2346,7 @@ int WINAPI WS_ioctlsocket(SOCKET s, long cmd, u_long *argp) */ int WINAPI WS_listen(SOCKET s, int backlog) { - int fd = get_sock_fd( s, GENERIC_READ, NULL ); + int fd = get_sock_fd( s, FILE_READ_DATA, NULL ); TRACE("socket %04x, backlog %d\n", s, backlog); if (fd != -1) @@ -2416,8 +2416,8 @@ int WINAPI WS_select(int nfds, WS_fd_set *ws_readfds, TRACE("read %p, write %p, excp %p timeout %p\n", ws_readfds, ws_writefds, ws_exceptfds, ws_timeout); - p_read = fd_set_import(&readfds, ws_readfds, GENERIC_READ, &highfd, readfd); - p_write = fd_set_import(&writefds, ws_writefds, GENERIC_WRITE, &highfd, writefd); + p_read = fd_set_import(&readfds, ws_readfds, FILE_READ_DATA, &highfd, readfd); + p_write = fd_set_import(&writefds, ws_writefds, FILE_WRITE_DATA, &highfd, writefd); p_except = fd_set_import(&exceptfds, ws_exceptfds, 0, &highfd, exceptfd); if (ws_timeout) { @@ -2514,7 +2514,7 @@ INT WINAPI WSASendTo( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, s, lpBuffers, dwBufferCount, dwFlags, to, tolen, lpOverlapped, lpCompletionRoutine); - fd = get_sock_fd( s, GENERIC_WRITE, &flags ); + fd = get_sock_fd( s, FILE_WRITE_DATA, &flags ); TRACE( "fd=%d, flags=%x\n", fd, flags ); if ( fd == -1 ) return SOCKET_ERROR; @@ -3880,7 +3880,7 @@ INT WINAPI WSARecvFrom( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, (lpFromlen ? *lpFromlen : -1L), lpOverlapped, lpCompletionRoutine); - fd = get_sock_fd( s, GENERIC_READ, &flags ); + fd = get_sock_fd( s, FILE_READ_DATA, &flags ); TRACE( "fd=%d, flags=%x\n", fd, flags ); if (fd == -1) return SOCKET_ERROR;