Переглянути джерело

Check ftell() result for error code before using it.

Dmitry-Me 11 роки тому
батько
коміт
acb9c9c260
1 змінених файлів з 6 додано та 1 видалено
  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;