mirror of
https://github.com/php/php-src.git
synced 2024-11-28 12:26:37 +08:00
Merge branch 'PHp-5.4' into PHP-5.5
* PHp-5.4: Fix bug #62524, only follow redirects in file streams for 3xx HTTP statuses
This commit is contained in:
commit
489073b501
@ -113,6 +113,7 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, char *path,
|
|||||||
int redirected = ((flags & HTTP_WRAPPER_REDIRECTED) != 0);
|
int redirected = ((flags & HTTP_WRAPPER_REDIRECTED) != 0);
|
||||||
int follow_location = 1;
|
int follow_location = 1;
|
||||||
php_stream_filter *transfer_encoding = NULL;
|
php_stream_filter *transfer_encoding = NULL;
|
||||||
|
int response_code;
|
||||||
|
|
||||||
tmp_line[0] = '\0';
|
tmp_line[0] = '\0';
|
||||||
|
|
||||||
@ -657,7 +658,6 @@ finish:
|
|||||||
|
|
||||||
if (php_stream_get_line(stream, tmp_line, sizeof(tmp_line) - 1, &tmp_line_len) != NULL) {
|
if (php_stream_get_line(stream, tmp_line, sizeof(tmp_line) - 1, &tmp_line_len) != NULL) {
|
||||||
zval *http_response;
|
zval *http_response;
|
||||||
int response_code;
|
|
||||||
|
|
||||||
if (tmp_line_len > 9) {
|
if (tmp_line_len > 9) {
|
||||||
response_code = atoi(tmp_line + 9);
|
response_code = atoi(tmp_line + 9);
|
||||||
@ -731,7 +731,9 @@ finish:
|
|||||||
http_header_line[http_header_line_length] = '\0';
|
http_header_line[http_header_line_length] = '\0';
|
||||||
|
|
||||||
if (!strncasecmp(http_header_line, "Location: ", 10)) {
|
if (!strncasecmp(http_header_line, "Location: ", 10)) {
|
||||||
if (context && php_stream_context_get_option(context, "http", "follow_location", &tmpzval) == SUCCESS) {
|
/* we only care about Location for 300, 301, 302, 303 and 307 */
|
||||||
|
/* see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.1 */
|
||||||
|
if ((response_code >= 300 && response_code < 304 || 307 == response_code) && context && php_stream_context_get_option(context, "http", "follow_location", &tmpzval) == SUCCESS) {
|
||||||
SEPARATE_ZVAL(tmpzval);
|
SEPARATE_ZVAL(tmpzval);
|
||||||
convert_to_long_ex(tmpzval);
|
convert_to_long_ex(tmpzval);
|
||||||
follow_location = Z_LVAL_PP(tmpzval);
|
follow_location = Z_LVAL_PP(tmpzval);
|
||||||
|
Loading…
Reference in New Issue
Block a user