fixed windows file mapping protection

This commit is contained in:
Roman Arutyunyan
2013-06-13 02:04:21 +04:00
parent 388d735460
commit 308dbd47d1

View File

@ -228,27 +228,19 @@ static void *
ngx_rtmp_mp4_mmap(ngx_fd_t fd, size_t size, off_t offset, ngx_fd_t *extra) ngx_rtmp_mp4_mmap(ngx_fd_t fd, size_t size, off_t offset, ngx_fd_t *extra)
{ {
void *data; void *data;
LARGE_INTEGER lsize;
lsize.QuadPart = size;
if (SetFilePointerEx(fd, lsize, NULL, FILE_BEGIN) == 0) {
return NULL;
}
if (SetEndOfFile(fd) == 0) {
return NULL;
}
*extra = CreateFileMapping(fd, NULL, PAGE_READONLY, *extra = CreateFileMapping(fd, NULL, PAGE_READONLY,
(u_long) ((off_t) size >> 32), (DWORD) (size >> 32),
(u_long) ((off_t) size & 0xffffffff), (DWORD) (size & 0xffffffff),
NULL); NULL);
if (*extra == NULL) { if (*extra == NULL) {
return NULL; return NULL;
} }
data = MapViewOfFile(*extra, FILE_MAP_READ, 0, 0, 0); data = MapViewOfFile(*extra, FILE_MAP_READ,
(DWORD) (offset >> 32),
(DWORD) (offset & 0xffffffff),
size);
if (data == NULL) { if (data == NULL) {
CloseHandle(*extra); CloseHandle(*extra);