Edit report at https://bugs.php.net/bug.php?id=61548&edit=1

 ID:                 61548
 Updated by:         m...@php.net
 Reported by:        david at greenseedtechnologies dot com
 Summary:            content-type must appear at the end of headers for
                     201 Location to work in http
-Status:             Open
+Status:             Closed
 Type:               Bug
 Package:            HTTP related
 Operating System:   linux
 PHP Version:        5.3.10
 Block user comment: N
 Private report:     N

 New Comment:

Automatic comment on behalf of mike
Revision: 
http://git.php.net/?p=php-src.git;a=commit;h=18b04b480ebc41841b2004cc11797eda40fb3958
Log: Fixed bug #61548


Previous Comments:
------------------------------------------------------------------------
[2012-03-28 22:14:35] david at greenseedtechnologies dot com

Description:
------------
Line 445 of http_fopen_wrapper.c
only works of the content-type is at the end of a list of header fields in the 
context. It fails if it is in the middle, or the beginning.

memmove(tmp, tmp + (s2 + 1 - tmp_c), tmp_c + l - 1 - s2);

To see the problem watch the HTTP stream in something like WireShark.


Test script:
---------------
<?php
$http = array(
   'header' =>
      null
      ."AnyHeader: 1\r\n"
      // BUG on line 445 of http_fopen_wrapper.c of PHP: content_type cannot be 
in the middle of headers.
      ."Content-type: anythingyouwanthere\r\n"
      ."SomeOtherHeader: 2\r\n"
);
/*
PHP incorrectly sends across when following the "Location":
GET /services/storm/lead HTTP/1.0
Host: storm
SomeOtherHeader: 2ent-type: anythingyouwanthere
SomeOtherHeader: 2
 */
$http['method'] = 'POST';
$options = array('http' => $http);
$context = stream_context_create($options);
$result = 
file_get_contents('http://some/url/that/resturns/201/and/has/a/Location/in/the/header',
 false, $context);


Expected result:
----------------
GET /services/storm/lead HTTP/1.0
Host: storm
AnyHeader: 1
SomeOtherHeader: 2

Actual result:
--------------
GET /services/storm/lead HTTP/1.0
Host: storm
SomeOtherHeader: 2ent-type: anythingyouwanthere
SomeOtherHeader: 2


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61548&edit=1

Reply via email to