mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-14 05:45:12 +00:00
Halt NBT parsing if end of data is found
This commit is contained in:
parent
9cd5c1581b
commit
ad3bf0998f
@ -44,6 +44,10 @@ class NBT{
|
|||||||
return substr($this->binary, $this->offset - $n, $n);
|
return substr($this->binary, $this->offset - $n, $n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function feof(){
|
||||||
|
return !isset($this->binary{$this->offset});
|
||||||
|
}
|
||||||
|
|
||||||
public function write($bin){
|
public function write($bin){
|
||||||
$this->binary .= $bin;
|
$this->binary .= $bin;
|
||||||
}
|
}
|
||||||
@ -119,7 +123,7 @@ class NBT{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function parseList(&$node, $tag, $cnt){
|
private function parseList(&$node, $tag, $cnt){
|
||||||
for($i = 0; $i < $cnt; ++$i){
|
for($i = 0; $i < $cnt and !$this->feof(); ++$i){
|
||||||
switch($tag){
|
switch($tag){
|
||||||
case self::TAG_BYTE:
|
case self::TAG_BYTE:
|
||||||
$value = $this->readTAG_BYTE();
|
$value = $this->readTAG_BYTE();
|
||||||
@ -163,7 +167,7 @@ class NBT{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function parseTree(&$node){
|
private function parseTree(&$node){
|
||||||
while(($tag = ord($this->read(1))) !== self::TAG_END){
|
while(($tag = ord($this->read(1))) !== self::TAG_END and !$this->feof()){
|
||||||
$name = $this->readTAG_STRING();
|
$name = $this->readTAG_STRING();
|
||||||
switch($tag){
|
switch($tag){
|
||||||
case self::TAG_BYTE:
|
case self::TAG_BYTE:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user