diff --git a/libtiff/tif_unix.c b/libtiff/tif_unix.c index 874f1feb..bea1ef78 100644 --- a/libtiff/tif_unix.c +++ b/libtiff/tif_unix.c @@ -162,7 +162,7 @@ _tiffMapProc(thandle_t fd, void** pbase, toff_t* psize) { uint64 size64 = _tiffSizeProc(fd); tmsize_t sizem = (tmsize_t)size64; - if ((uint64)sizem==size64) { + if (size64 && (uint64)sizem==size64) { fd_as_handle_union_t fdh; fdh.h = fd; *pbase = (void*) diff --git a/libtiff/tif_win32.c b/libtiff/tif_win32.c index bf5fbfb3..b3110b23 100644 --- a/libtiff/tif_win32.c +++ b/libtiff/tif_win32.c @@ -156,8 +156,10 @@ static uint64 _tiffSizeProc(thandle_t fd) { ULARGE_INTEGER m; - m.LowPart=GetFileSize(fd,&m.HighPart); - return(m.QuadPart); + if (GetFileSizeEx(fd,&m)) + return(m.QuadPart); + else + return(0); } static int @@ -189,7 +191,7 @@ _tiffMapProc(thandle_t fd, void** pbase, toff_t* psize) size = _tiffSizeProc(fd); sizem = (tmsize_t)size; - if ((uint64)sizem!=size) + if (!size || (uint64)sizem!=size) return (0); /* By passing in 0 for the maximum file size, it specifies that we