pajoye Mon, 30 Aug 2010 17:05:56 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=302899
Log: - fix possible leak and error while fetching PHPRC Changed paths: U php/php-src/branches/PHP_5_3/main/php_ini.c U php/php-src/trunk/main/php_ini.c Modified: php/php-src/branches/PHP_5_3/main/php_ini.c =================================================================== --- php/php-src/branches/PHP_5_3/main/php_ini.c 2010-08-30 17:01:36 UTC (rev 302898) +++ php/php-src/branches/PHP_5_3/main/php_ini.c 2010-08-30 17:05:56 UTC (rev 302899) @@ -398,13 +398,35 @@ static const char paths_separator[] = { ZEND_PATHS_SEPARATOR, 0 }; #ifdef PHP_WIN32 char *reg_location; + char phprc_path[MAXPATHLEN]; #endif env_location = getenv("PHPRC"); + +#ifdef PHP_WIN32 if (!env_location) { - env_location = ""; + char dummybuf; + int size; + + SetLastError(0); + + /*If the given bugger is not large enough to hold the data, the return value is + the buffer size, in characters, required to hold the string and its terminating + null character. We use this return value to alloc the final buffer. */ + size = GetEnvironmentVariableA("PHPRC", &dummybuf, 0); + if (GetLastError() == ERROR_ENVVAR_NOT_FOUND) { + /* The environment variable doesn't exist. */ + env_location = ""; + } else { + if (size == 0) { + env_location = ""; + } else { + size = GetEnvironmentVariableA("PHPRC", phprc_path, size); + env_location = phprc_path; + } + } } - +#endif /* * Prepare search path */ Modified: php/php-src/trunk/main/php_ini.c =================================================================== --- php/php-src/trunk/main/php_ini.c 2010-08-30 17:01:36 UTC (rev 302898) +++ php/php-src/trunk/main/php_ini.c 2010-08-30 17:05:56 UTC (rev 302899) @@ -396,13 +396,35 @@ static const char paths_separator[] = { ZEND_PATHS_SEPARATOR, 0 }; #ifdef PHP_WIN32 char *reg_location; + char phprc_path[MAXPATHLEN]; #endif env_location = getenv("PHPRC"); + +#ifdef PHP_WIN32 if (!env_location) { - env_location = ""; + char dummybuf; + int size; + + SetLastError(0); + + /*If the given bugger is not large enough to hold the data, the return value is + the buffer size, in characters, required to hold the string and its terminating + null character. We use this return value to alloc the final buffer. */ + size = GetEnvironmentVariableA("PHPRC", &dummybuf, 0); + if (GetLastError() == ERROR_ENVVAR_NOT_FOUND) { + /* The environment variable doesn't exist. */ + env_location = ""; + } else { + if (size == 0) { + env_location = ""; + } else { + size = GetEnvironmentVariableA("PHPRC", phprc_path, size); + env_location = phprc_path; + } + } } - +#endif /* * Prepare search path */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php