Explorar o código

Merge pull request #193 from Dmitry-Me/shouldCheckFtellForError

Check ftell() result for error code before using it.
Lee Thomason %!s(int64=11) %!d(string=hai) anos
pai
achega
73c822c201
Modificáronse 1 ficheiros con 6 adicións e 1 borrados
  1. 6 1
      tinyxml2.cpp

+ 6 - 1
tinyxml2.cpp

@@ -1695,9 +1695,14 @@ XMLError XMLDocument::LoadFile( FILE* fp )
     }
     }
 
 
     fseek( fp, 0, SEEK_END );
     fseek( fp, 0, SEEK_END );
-    size_t size = ftell( fp );
+    const long filelength = ftell( fp );
     fseek( fp, 0, SEEK_SET );
     fseek( fp, 0, SEEK_SET );
+    if ( filelength == -1L ) {
+        SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );
+        return _errorID;
+    }
 
 
+    const size_t size = filelength;
     if ( size == 0 ) {
     if ( size == 0 ) {
         SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
         SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
         return _errorID;
         return _errorID;