diff --git a/src/dependencies.php b/src/dependencies.php index 2eae613a1..f6c908e5d 100644 --- a/src/dependencies.php +++ b/src/dependencies.php @@ -108,6 +108,7 @@ foreach($inc as $s){ $sha1sum ^= sha1_file($s, true); } /***REM_END***/ +ini_set("opcache.mmap_base", bin2hex(Utils::getRandomBytes(8, false))); //Fix OPCache address errors define("SOURCE_SHA1SUM", bin2hex($sha1sum)); /***REM_START***/ diff --git a/src/network/raknet/RakNetDataPacket.php b/src/network/raknet/RakNetDataPacket.php index 9dc5f0d3d..b0af51c95 100644 --- a/src/network/raknet/RakNetDataPacket.php +++ b/src/network/raknet/RakNetDataPacket.php @@ -56,12 +56,15 @@ abstract class RakNetDataPacket extends stdClass{ if($len <= 0){ $this->offset = strlen($this->buffer) - 1; return ""; - } - if($len === true){ + }elseif($len === true){ return substr($this->buffer, $this->offset); } - $this->offset += $len; - return substr($this->buffer, $this->offset - $len, $len); + + $buffer = b""; + for(; $len > 0; --$len, ++$this->offset){ + $buffer .= $this->buffer{$this->offset}; + } + return $buffer; } protected function put($str){ @@ -118,7 +121,7 @@ abstract class RakNetDataPacket extends stdClass{ } protected function getByte(){ - return ord($this->get(1)); + return ord($this->buffer{$this->offset++}); } protected function putByte($v){ diff --git a/src/network/raknet/RakNetPacket.php b/src/network/raknet/RakNetPacket.php index 70b560df9..87ea11768 100644 --- a/src/network/raknet/RakNetPacket.php +++ b/src/network/raknet/RakNetPacket.php @@ -31,17 +31,20 @@ class RakNetPacket extends Packet{ public function pid(){ return $this->packetID; } - - private function get($len){ + + protected function get($len){ if($len <= 0){ $this->offset = strlen($this->buffer) - 1; return ""; - } - if($len === true){ + }elseif($len === true){ return substr($this->buffer, $this->offset); } - $this->offset += $len; - return substr($this->buffer, $this->offset - $len, $len); + + $buffer = b""; + for(; $len > 0; --$len, ++$this->offset){ + $buffer .= $this->buffer{$this->offset}; + } + return $buffer; } private function getLong($unsigned = false){ @@ -61,7 +64,7 @@ class RakNetPacket extends Packet{ } private function getByte(){ - return ord($this->get(1)); + return ord($this->buffer{$this->offset++}); } private function feof(){