@@ -915,8 +915,15 @@ static UBool compareBinaryFiles(const char* defaultTZFileName, const char* TZFil
915915 fseek (tzInfo->defaultTZFilePtr , 0 , SEEK_END);
916916 tzInfo->defaultTZFileSize = ftell (tzInfo->defaultTZFilePtr );
917917 }
918- fseek (file, 0 , SEEK_END);
918+ if (fseek (file, 0 , SEEK_END) != 0 ) {
919+ fclose (file);
920+ return false ;
921+ }
919922 sizeFile = ftell (file);
923+ if (sizeFile == -1 ) {
924+ fclose (file);
925+ return false ;
926+ }
920927 sizeFileLeft = sizeFile;
921928
922929 if (sizeFile != tzInfo->defaultTZFileSize ) {
@@ -926,16 +933,26 @@ static UBool compareBinaryFiles(const char* defaultTZFileName, const char* TZFil
926933 * compare each byte to determine equality.
927934 */
928935 if (tzInfo->defaultTZBuffer == nullptr ) {
929- rewind (tzInfo->defaultTZFilePtr );
936+ if (fseek (tzInfo->defaultTZFilePtr , 0 , SEEK_SET) != 0 ) {
937+ fclose (file);
938+ return false ;
939+ }
930940 tzInfo->defaultTZBuffer = static_cast <char *>(uprv_malloc (sizeof (char ) * tzInfo->defaultTZFileSize ));
931941 sizeFileRead = fread (tzInfo->defaultTZBuffer , 1 , tzInfo->defaultTZFileSize , tzInfo->defaultTZFilePtr );
932942 }
933- rewind (file);
943+ if (fseek (file, 0 , SEEK_SET) != 0 ) {
944+ fclose (file);
945+ return false ;
946+ }
934947 while (sizeFileLeft > 0 ) {
935948 uprv_memset (bufferFile, 0 , MAX_READ_SIZE);
936949 sizeFileToRead = sizeFileLeft < MAX_READ_SIZE ? sizeFileLeft : MAX_READ_SIZE;
937950
938951 sizeFileRead = fread (bufferFile, 1 , sizeFileToRead, file);
952+ if (sizeFileRead == -1 ) {
953+ fclose (file);
954+ return false ;
955+ }
939956 if (memcmp (tzInfo->defaultTZBuffer + tzInfo->defaultTZPosition , bufferFile, sizeFileRead) != 0 ) {
940957 result = false ;
941958 break ;
0 commit comments