aboutsummaryrefslogtreecommitdiff
path: root/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php
diff options
context:
space:
mode:
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.php32
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'
+ );
+ }
+}