Catch DNS Query that fail unpack()
This commit is contained in:
parent
612efda945
commit
b7c1c97cf7
@ -32,7 +32,8 @@ final class Query
|
|||||||
'arcount' => [0x05,'n',1], // Resource Records in the addition records section
|
'arcount' => [0x05,'n',1], // Resource Records in the addition records section
|
||||||
];
|
];
|
||||||
|
|
||||||
public function __construct(string $buf) {
|
public function __construct(string $buf)
|
||||||
|
{
|
||||||
$this->buf = $buf;
|
$this->buf = $buf;
|
||||||
$rx_ptr = 0;
|
$rx_ptr = 0;
|
||||||
|
|
||||||
@ -54,7 +55,15 @@ final class Query
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get the query type/class
|
// Get the query type/class
|
||||||
$result = unpack('ntype/nclass',substr($this->buf,$rx_ptr,4));
|
try {
|
||||||
|
$result = unpack('ntype/nclass',substr($this->buf,$rx_ptr,4));
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Log::error(sprintf('%s:! Unpack failed: Buffer: [%s] (%d), RXPTR [%d]',self::LOGKEY,hex_dump($this->buf),strlen($this->buf),$rx_ptr));
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$rx_ptr += 4;
|
$rx_ptr += 4;
|
||||||
$this->type = $result['type'];
|
$this->type = $result['type'];
|
||||||
$this->class = $result['class'];
|
$this->class = $result['class'];
|
||||||
@ -96,7 +105,8 @@ final class Query
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function header_len() {
|
public static function header_len()
|
||||||
|
{
|
||||||
return collect(self::header)->sum(function($item) { return $item[2]*2; });
|
return collect(self::header)->sum(function($item) { return $item[2]*2; });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ final class SocketClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Log::error(sprintf('%s: - socket_recv Exception [%s]',self::LOGKEY,$e->getMessage()));
|
Log::error(sprintf('%s:! socket_recv Exception [%s]',self::LOGKEY,$e->getMessage()));
|
||||||
|
|
||||||
throw new SocketException($x=socket_last_error($this->connection),socket_strerror($x));
|
throw new SocketException($x=socket_last_error($this->connection),socket_strerror($x));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user