diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/standard/http_fopen_wrapper.c | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c index f13bf5f69a..c3f10fd3e9 100644 --- a/ext/standard/http_fopen_wrapper.c +++ b/ext/standard/http_fopen_wrapper.c @@ -346,7 +346,11 @@ php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, char *path, ch  				if (*location != '/') {  					if (*(location+1) != '\0') {				  						php_dirname(resource->path, strlen(resource->path)); -						snprintf(loc_path, sizeof(loc_path) - 1, "%s%s", resource->path, location); +						if (resource->path && *(resource->path) == '/' && *(resource->path + 1) == '\0') { +							snprintf(loc_path, sizeof(loc_path) - 1, "%s%s", resource->path, location); +						} else { +							snprintf(loc_path, sizeof(loc_path) - 1, "%s/%s", resource->path, location); +						}  					} else {  						snprintf(loc_path, sizeof(loc_path) - 1, "/%s", location);  					} @@ -358,8 +362,7 @@ php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, char *path, ch  				} else {  					snprintf(new_path, sizeof(new_path) - 1, "%s://%s%s", resource->scheme, resource->host, loc_path);  				} -			} -			else { +			} else {  				strlcpy(new_path, location, sizeof(new_path));  			}  			stream = php_stream_url_wrap_http(NULL, new_path, mode, options, opened_path, context STREAMS_CC TSRMLS_CC); | 
