diff options
author | Pierre Joye <pajoye@php.net> | 2010-08-30 17:05:56 +0000 |
---|---|---|
committer | Pierre Joye <pajoye@php.net> | 2010-08-30 17:05:56 +0000 |
commit | 2721bbfcf9937248e6f113549dc394f377d5f41c (patch) | |
tree | 868603ab53e18017e4824b6a4e900b4307a9b85f /main/php_ini.c | |
parent | 42fea46887ce851098ef10c07624535b0c15bb49 (diff) | |
download | php-git-2721bbfcf9937248e6f113549dc394f377d5f41c.tar.gz |
- fix possible leak and error while fetching PHPRC
Diffstat (limited to 'main/php_ini.c')
-rw-r--r-- | main/php_ini.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/main/php_ini.c b/main/php_ini.c index 42710418c6..dfe312f446 100644 --- a/main/php_ini.c +++ b/main/php_ini.c @@ -396,13 +396,35 @@ int php_init_config(TSRMLS_D) 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 */ |