1<?php 2 3declare(strict_types=1); 4 5namespace MaxMind\Db\Reader; 6 7class Util 8{ 9 /** 10 * @param resource $stream 11 */ 12 public static function read($stream, int $offset, int $numberOfBytes): string 13 { 14 if ($numberOfBytes === 0) { 15 return ''; 16 } 17 if (fseek($stream, $offset) === 0) { 18 $value = fread($stream, $numberOfBytes); 19 20 // We check that the number of bytes read is equal to the number 21 // asked for. We use ftell as getting the length of $value is 22 // much slower. 23 if ($value !== false && ftell($stream) - $offset === $numberOfBytes) { 24 return $value; 25 } 26 } 27 throw new InvalidDatabaseException( 28 'The MaxMind DB file contains bad data' 29 ); 30 } 31} 32