From 06ca9a099df130dc9b5e241a761198822a5de55f Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Thu, 27 Oct 2016 15:10:34 +0900 Subject: [PATCH] Check if file size <= LONG_MAX. --- taglib/toolkit/tfilestream.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/taglib/toolkit/tfilestream.cpp b/taglib/toolkit/tfilestream.cpp index 3f186cca..229b65c4 100644 --- a/taglib/toolkit/tfilestream.cpp +++ b/taglib/toolkit/tfilestream.cpp @@ -50,7 +50,7 @@ namespace FileHandle openFile(const FileName &path, bool readOnly) { const DWORD access = readOnly ? GENERIC_READ : (GENERIC_READ | GENERIC_WRITE); - + #if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0602) return CreateFile2(path.toString().toCWString(), access, FILE_SHARE_READ, OPEN_EXISTING, NULL); #else @@ -442,14 +442,14 @@ long FileStream::length() SetLastError(NO_ERROR); #if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0602) - LARGE_INTEGER fSize; - GetFileSizeEx(d->file, &fSize); - LONGLONG fileSize = fSize.QuadPart; + LARGE_INTEGER fileSize; + GetFileSizeEx(d->file, &fileSize); #else - const DWORD fileSize = GetFileSize(d->file, NULL); + ULARGE_INTEGER fileSize; + fileSize.LowPart = GetFileSize(d->file, &fileSize.HighPart); #endif - if(GetLastError() == NO_ERROR) { - return static_cast(fileSize); + if(GetLastError() == NO_ERROR && fileSize.QuadPart <= LONG_MAX) { + return static_cast(fileSize.QuadPart); } else { debug("FileStream::length() -- Failed to get the file size."); -- 2.40.0