X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_url_api.c;h=b32fd9d454758e44191b05bf2114213e51406c7c;hb=8b0cff922b0538f98364943291ce0359c3da6d88;hp=459b618b532f551ffbdb73790999b816d5644975;hpb=cf9967800843ea01e77b374b4d78fad4bc18a3f6;p=m6w6%2Fext-http diff --git a/http_url_api.c b/http_url_api.c index 459b618..b32fd9d 100644 --- a/http_url_api.c +++ b/http_url_api.c @@ -18,27 +18,26 @@ #ifdef HAVE_CONFIG_H # include "config.h" #endif - -#ifdef PHP_WIN32 -# include -#elif defined(HAVE_NETDB_H) -# include -#endif - #include "php.h" + +#include "SAPI.h" #include "zend_ini.h" #include "php_output.h" #include "ext/standard/url.h" -#include "SAPI.h" - -#include "phpstr/phpstr.h" - #include "php_http.h" #include "php_http_api.h" #include "php_http_url_api.h" #include "php_http_std_defs.h" +#include "phpstr/phpstr.h" + +#ifdef PHP_WIN32 +# include +#elif defined(HAVE_NETDB_H) +# include +#endif + ZEND_EXTERN_MODULE_GLOBALS(http); /* {{{ char *http_absolute_url(char *) */ @@ -54,7 +53,7 @@ PHP_HTTP_API char *_http_absolute_url_ex( php_url *purl, furl = {NULL}; size_t full_len = 0; zval *zhost = NULL; - char *scheme = NULL, *URL = ecalloc(1, HTTP_URI_MAXLEN + 1); + char *scheme = NULL, *uri, *URL = ecalloc(1, HTTP_URI_MAXLEN + 1); if ((!url || !url_len) && ( (!(url = SG(request_info).request_uri)) || @@ -63,7 +62,8 @@ PHP_HTTP_API char *_http_absolute_url_ex( return NULL; } - if (!(purl = php_url_parse((char *) url))) { + uri = estrndup(url, url_len); + if (!(purl = php_url_parse(uri))) { http_error_ex(E_WARNING, HTTP_E_PARSE, "Could not parse supplied URL: %s", url); return NULL; } @@ -123,6 +123,7 @@ PHP_HTTP_API char *_http_absolute_url_ex( efree(scheme); \ } \ php_url_free(purl); \ + efree(uri); \ return URL; \ } else { \ strcat(URL, add_string); \ @@ -172,6 +173,7 @@ PHP_HTTP_API char *_http_absolute_url_ex( efree(scheme); } php_url_free(purl); + efree(uri); return URL; }