@@ -66,7 +66,7 @@ private function parse($data, Message $message)
6666
6767 public function parseHeader (Message $ message )
6868 {
69- if (strlen ($ message ->data ) < 12 ) {
69+ if (! isset ($ message ->data [ 12 - 1 ]) ) {
7070 return ;
7171 }
7272
@@ -97,19 +97,11 @@ public function parseHeader(Message $message)
9797
9898 public function parseQuestion (Message $ message )
9999 {
100- if (strlen ($ message ->data ) < 2 ) {
101- return ;
102- }
103-
104100 $ consumed = $ message ->consumed ;
105101
106102 list ($ labels , $ consumed ) = $ this ->readLabels ($ message ->data , $ consumed );
107103
108- if (null === $ labels ) {
109- return ;
110- }
111-
112- if (strlen ($ message ->data ) - $ consumed < 4 ) {
104+ if ($ labels === null || !isset ($ message ->data [$ consumed + 4 - 1 ])) {
113105 return ;
114106 }
115107
@@ -133,19 +125,11 @@ public function parseQuestion(Message $message)
133125
134126 public function parseAnswer (Message $ message )
135127 {
136- if (strlen ($ message ->data ) < 2 ) {
137- return ;
138- }
139-
140128 $ consumed = $ message ->consumed ;
141129
142130 list ($ labels , $ consumed ) = $ this ->readLabels ($ message ->data , $ consumed );
143131
144- if (null === $ labels ) {
145- return ;
146- }
147-
148- if (strlen ($ message ->data ) - $ consumed < 10 ) {
132+ if ($ labels === null || !isset ($ message ->data [$ consumed + 10 - 1 ])) {
149133 return ;
150134 }
151135
@@ -163,6 +147,10 @@ public function parseAnswer(Message $message)
163147 list ($ rdLength ) = array_values (unpack ('n ' , substr ($ message ->data , $ consumed , 2 )));
164148 $ consumed += 2 ;
165149
150+ if (!isset ($ message ->data [$ consumed + $ rdLength - 1 ])) {
151+ return ;
152+ }
153+
166154 $ rdata = null ;
167155
168156 if (Message::TYPE_A === $ type || Message::TYPE_AAAA === $ type ) {
@@ -262,6 +250,7 @@ private function readLabels($data, $consumed)
262250
263251 $ consumed += 2 ;
264252 list ($ newLabels ) = $ this ->readLabels ($ data , $ offset );
253+
265254 if ($ newLabels === null ) {
266255 return array (null , null );
267256 }
0 commit comments