File tree Expand file tree Collapse file tree 2 files changed +29
-8
lines changed Expand file tree Collapse file tree 2 files changed +29
-8
lines changed Original file line number Diff line number Diff line change @@ -1363,14 +1363,16 @@ private function parseHeaders($raw_headers)
1363
1363
1364
1364
$ raw_headers_count = count ($ raw_headers );
1365
1365
for ($ i = 1 ; $ i < $ raw_headers_count ; $ i ++) {
1366
- list ($ key , $ value ) = explode (': ' , $ raw_headers [$ i ], 2 );
1367
- $ key = trim ($ key );
1368
- $ value = trim ($ value );
1369
- // Use isset() as array_key_exists() and ArrayAccess are not compatible.
1370
- if (isset ($ http_headers [$ key ])) {
1371
- $ http_headers [$ key ] .= ', ' . $ value ;
1372
- } else {
1373
- $ http_headers [$ key ] = $ value ;
1366
+ if (strpos ($ raw_headers [$ i ], ': ' ) !== false ) {
1367
+ list ($ key , $ value ) = explode (': ' , $ raw_headers [$ i ], 2 );
1368
+ $ key = trim ($ key );
1369
+ $ value = trim ($ value );
1370
+ // Use isset() as array_key_exists() and ArrayAccess are not compatible.
1371
+ if (isset ($ http_headers [$ key ])) {
1372
+ $ http_headers [$ key ] .= ', ' . $ value ;
1373
+ } else {
1374
+ $ http_headers [$ key ] = $ value ;
1375
+ }
1374
1376
}
1375
1377
}
1376
1378
Original file line number Diff line number Diff line change @@ -2615,6 +2615,25 @@ public function testEmptyResponse()
2615
2615
$ this ->assertArrayHasKey ('Status-Line ' , $ response_headers );
2616
2616
}
2617
2617
2618
+ public function testMalformedResponseHeaders ()
2619
+ {
2620
+ $ response =
2621
+ 'HTTP/1.0 403 Forbidden ' . "\n" .
2622
+ 'Cache-Control: no-cache ' . "\n" .
2623
+ 'Content-Type: text/html ' . "\n" .
2624
+ 'Strict-Transport-Security: max-age=0 ' .
2625
+ "\r\n" .
2626
+ "\n" ;
2627
+
2628
+ $ reflector = new \ReflectionClass ('\Curl\Curl ' );
2629
+ $ reflection_method = $ reflector ->getMethod ('parseResponseHeaders ' );
2630
+ $ reflection_method ->setAccessible (true );
2631
+
2632
+ $ curl = new Curl ();
2633
+ $ response_headers = $ reflection_method ->invoke ($ curl , $ response );
2634
+ $ this ->assertTrue ($ response_headers instanceof CaseInsensitiveArray);
2635
+ }
2636
+
2618
2637
public function testArrayToStringConversion ()
2619
2638
{
2620
2639
$ test = new Test ();
You can’t perform that action at this time.
0 commit comments