X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_url_api.c;h=288abe445b1f88067777a33fa3dc90101923f2c1;hb=77b24e0e5f85b64a168a4ea4ce83db9339b1f31b;hp=459b618b532f551ffbdb73790999b816d5644975;hpb=cf9967800843ea01e77b374b4d78fad4bc18a3f6;p=m6w6%2Fext-http diff --git a/http_url_api.c b/http_url_api.c index 459b618..288abe4 100644 --- a/http_url_api.c +++ b/http_url_api.c @@ -19,12 +19,6 @@ # include "config.h" #endif -#ifdef PHP_WIN32 -# include -#elif defined(HAVE_NETDB_H) -# include -#endif - #include "php.h" #include "zend_ini.h" #include "php_output.h" @@ -39,6 +33,12 @@ #include "php_http_url_api.h" #include "php_http_std_defs.h" +#ifdef PHP_WIN32 +# include +#elif defined(HAVE_NETDB_H) +# include +#endif + ZEND_EXTERN_MODULE_GLOBALS(http); /* {{{ char *http_absolute_url(char *) */ @@ -54,7 +54,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 +63,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 +124,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 +174,7 @@ PHP_HTTP_API char *_http_absolute_url_ex( efree(scheme); } php_url_free(purl); + efree(uri); return URL; }