diff options
Diffstat (limited to 'vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php')
-rw-r--r-- | vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php new file mode 100644 index 0000000..89db715 --- /dev/null +++ b/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php @@ -0,0 +1,32 @@ +<?php + +declare(strict_types=1); + +namespace MaxMind\Db\Reader; + +class Util +{ + /** + * @param resource $stream + */ + public static function read($stream, int $offset, int $numberOfBytes): string + { + if ($numberOfBytes === 0) { + return ''; + } + if (fseek($stream, $offset) === 0) { + $value = fread($stream, $numberOfBytes); + + // We check that the number of bytes read is equal to the number + // asked for. We use ftell as getting the length of $value is + // much slower. + if ($value !== false && ftell($stream) - $offset === $numberOfBytes) { + return $value; + } + } + + throw new InvalidDatabaseException( + 'The MaxMind DB file contains bad data' + ); + } +} |