diff --git a/NEWS b/NEWS index 5b440fd0740..a9c8d9dc095 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ PHP NEWS - Renamed SoapClient->__call() to SoapClinet->__soapCall(). (Dmitry) - Fixed bug with raw_post_data not getting set (Brian) - Fixed a file-descriptor leak with phpinfo() and other 'special' URLs (Zeev) +- Fixed bug #30182 (SOAP module processing WSDL file dumps core). (Dmitry) - Fixed bug #30045 (Cannot pass big integers (> 2147483647) in SOAP requests). (Dmitry) - Fixed bug #29985 (unserialize()/ __PHP_Incomplete_class does not report diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c index 05237969bc9..0d4695f357e 100644 --- a/ext/soap/php_sdl.c +++ b/ext/soap/php_sdl.c @@ -2168,13 +2168,14 @@ sdlPtr get_sdl(char *uri TSRMLS_DC) { sdlPtr sdl = NULL; char* old_error_code = SOAP_GLOBAL(error_code); + int uri_len; SOAP_GLOBAL(error_code) = "WSDL"; - if (SOAP_GLOBAL(cache_enabled)) { + if (SOAP_GLOBAL(cache_enabled) && ((uri_len = strlen(uri)) < MAXPATHLEN)) { char fn[MAXPATHLEN]; - if (strchr(uri,':') != NULL || IS_ABSOLUTE_PATH(uri,strlen(uri))) { + if (strchr(uri,':') != NULL || IS_ABSOLUTE_PATH(uri, uri_len)) { strcpy(fn, uri); } else if (VCWD_REALPATH(uri, fn) == NULL) { sdl = load_wsdl(uri);