[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/main/php_ini.c trunk/main/php_ini.c

2011-01-19 Thread Pierre Joye
pajoye   Wed, 19 Jan 2011 14:21:46 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=307587

Log:
- path len check and fix buffer overrun

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 2011-01-19 14:07:37 UTC (rev 
307586)
+++ php/php-src/branches/PHP_5_3/main/php_ini.c 2011-01-19 14:21:46 UTC (rev 
307587)
@@ -824,12 +824,15 @@

 #if PHP_WIN32
char path_bak[MAXPATHLEN];
+#endif

if (path_len  MAXPATHLEN) {
return;
}
+
+#if PHP_WIN32
memcpy(path_bak, path, path_len);
-   path_bak[path_len] = 0;
+   path_bak[path_len - 1] = 0;
TRANSLATE_SLASHES_LOWER(path_bak);
path = path_bak;
 #endif

Modified: php/php-src/trunk/main/php_ini.c
===
--- php/php-src/trunk/main/php_ini.c2011-01-19 14:07:37 UTC (rev 307586)
+++ php/php-src/trunk/main/php_ini.c2011-01-19 14:21:46 UTC (rev 307587)
@@ -820,12 +820,15 @@

 #if PHP_WIN32
char path_bak[MAXPATHLEN];
+#endif

if (path_len  MAXPATHLEN) {
return;
}
+
+#if PHP_WIN32
memcpy(path_bak, path, path_len);
-   path_bak[path_len] = 0;
+   path_bak[path_len - 1] = 0;
TRANSLATE_SLASHES_LOWER(path_bak);
path = path_bak;
 #endif

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/main/php_ini.c trunk/main/php_ini.c

2011-01-17 Thread Pierre Joye
pajoye   Mon, 17 Jan 2011 14:29:16 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=307541

Log:
- path len sanity check

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 2011-01-17 14:23:57 UTC (rev 
307540)
+++ php/php-src/branches/PHP_5_3/main/php_ini.c 2011-01-17 14:29:16 UTC (rev 
307541)
@@ -824,6 +824,10 @@

 #if PHP_WIN32
char path_bak[MAXPATHLEN];
+
+   if (path_len  MAXPATHLEN) {
+   return;
+   }
memcpy(path_bak, path, path_len);
path_bak[path_len] = 0;
TRANSLATE_SLASHES_LOWER(path_bak);

Modified: php/php-src/trunk/main/php_ini.c
===
--- php/php-src/trunk/main/php_ini.c2011-01-17 14:23:57 UTC (rev 307540)
+++ php/php-src/trunk/main/php_ini.c2011-01-17 14:29:16 UTC (rev 307541)
@@ -820,6 +820,10 @@

 #if PHP_WIN32
char path_bak[MAXPATHLEN];
+
+   if (path_len  MAXPATHLEN) {
+   return;
+   }
memcpy(path_bak, path, path_len);
path_bak[path_len] = 0;
TRANSLATE_SLASHES_LOWER(path_bak);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/main/php_ini.c trunk/main/php_ini.c

2011-01-10 Thread Pierre Joye
pajoye   Mon, 10 Jan 2011 08:28:47 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=307330

Log:
- remove local redeclaration

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 2011-01-10 08:07:38 UTC (rev 
307329)
+++ php/php-src/branches/PHP_5_3/main/php_ini.c 2011-01-10 08:28:47 UTC (rev 
307330)
@@ -650,14 +650,14 @@
struct stat sb;
char ini_file[MAXPATHLEN];
char *p;
-   zend_file_handle fh;
+   zend_file_handle fh2;
zend_llist scanned_ini_list;
zend_llist_element *element;
int l, total_l = 0;

if ((ndir = php_scandir(php_ini_scanned_path, namelist, 0, 
php_alphasort))  0) {
zend_llist_init(scanned_ini_list, sizeof(char *), 
(llist_dtor_func_t) free_estring, 1);
-   memset(fh, 0, sizeof(fh));
+   memset(fh2, 0, sizeof(fh2));

for (i = 0; i  ndir; i++) {

@@ -676,11 +676,11 @@
}
if (VCWD_STAT(ini_file, sb) == 0) {
if (S_ISREG(sb.st_mode)) {
-   if ((fh.handle.fp = 
VCWD_FOPEN(ini_file, r))) {
-   fh.filename = ini_file;
-   fh.type = 
ZEND_HANDLE_FP;
+   if ((fh2.handle.fp = 
VCWD_FOPEN(ini_file, r))) {
+   fh2.filename = ini_file;
+   fh2.type = 
ZEND_HANDLE_FP;

-   if 
(zend_parse_ini_file(fh, 1, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) 
php_ini_parser_cb, configuration_hash TSRMLS_CC) == SUCCESS) {
+   if 
(zend_parse_ini_file(fh2, 1, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) 
php_ini_parser_cb, configuration_hash TSRMLS_CC) == SUCCESS) {
/* Here, add it 
to the list of ini files read */
l = 
strlen(ini_file);
total_l += l + 
2;
@@ -819,7 +819,7 @@
  */
 PHPAPI void php_ini_activate_per_dir_config(char *path, uint path_len 
TSRMLS_DC)
 {
-   zval *tmp;
+   zval *tmp2;
char *ptr;

 #if PHP_WIN32
@@ -836,8 +836,8 @@
while ((ptr = strchr(ptr, '/')) != NULL) {
*ptr = 0;
/* Search for source array matching the path from 
configuration_hash */
-   if (zend_hash_find(configuration_hash, path, 
strlen(path) + 1, (void **) tmp) == SUCCESS) {
-   php_ini_activate_config(Z_ARRVAL_P(tmp), 
PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE TSRMLS_CC);
+   if (zend_hash_find(configuration_hash, path, 
strlen(path) + 1, (void **) tmp2) == SUCCESS) {
+   php_ini_activate_config(Z_ARRVAL_P(tmp2), 
PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE TSRMLS_CC);
}
*ptr = '/';
ptr++;

Modified: php/php-src/trunk/main/php_ini.c
===
--- php/php-src/trunk/main/php_ini.c2011-01-10 08:07:38 UTC (rev 307329)
+++ php/php-src/trunk/main/php_ini.c2011-01-10 08:28:47 UTC (rev 307330)
@@ -646,14 +646,14 @@
struct stat sb;
char ini_file[MAXPATHLEN];
char *p;
-   zend_file_handle fh;
+   zend_file_handle fh2;
zend_llist scanned_ini_list;
zend_llist_element *element;
int l, total_l = 0;

if ((ndir = php_scandir(php_ini_scanned_path, namelist, 0, 
php_alphasort))  0) {
zend_llist_init(scanned_ini_list, sizeof(char *), 
(llist_dtor_func_t) free_estring, 1);
-   memset(fh, 0, sizeof(fh));
+   memset(fh2, 0, sizeof(fh2));

for (i = 0; i  ndir; i++) {

@@ -672,11 +672,11 @@
}
if (VCWD_STAT(ini_file, sb) == 0) {
if (S_ISREG(sb.st_mode)) {
-   if ((fh.handle.fp = 
VCWD_FOPEN(ini_file, r))) {
-   fh.filename = ini_file;
-  

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/main/php_ini.c trunk/main/php_ini.c

2010-08-30 Thread Pierre Joye
pajoye   Mon, 30 Aug 2010 17:05:56 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=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.c2010-08-30 17:01:36 UTC (rev 302898)
+++ php/php-src/trunk/main/php_ini.c2010-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

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/main/php_ini.c trunk/main/php_ini.c

2010-08-30 Thread Felipe Pena
felipe   Mon, 30 Aug 2010 21:34:54 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=302903

Log:
- Fixed crash on non-Windows build

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 18:13:28 UTC (rev 
302902)
+++ php/php-src/branches/PHP_5_3/main/php_ini.c 2010-08-30 21:34:54 UTC (rev 
302903)
@@ -426,6 +426,10 @@
}
}
}
+#else
+   if (!env_location) {
+   env_location = ;
+   }
 #endif
/*
 * Prepare search path

Modified: php/php-src/trunk/main/php_ini.c
===
--- php/php-src/trunk/main/php_ini.c2010-08-30 18:13:28 UTC (rev 302902)
+++ php/php-src/trunk/main/php_ini.c2010-08-30 21:34:54 UTC (rev 302903)
@@ -424,6 +424,10 @@
}
}
}
+#else
+   if (!env_location) {
+   env_location = ;
+   }
 #endif
/*
 * Prepare search path

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/main/php_ini.c trunk/main/php_ini.c

2009-10-11 Thread Pierre-Alain Joye
pajoye   Sun, 11 Oct 2009 20:50:53 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=289546

Log:
- #48779, don't loop twice over the path chars

Bug: http://bugs.php.net/48779 (Open) Use of HOST section cause 500 error
  
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 2009-10-11 20:14:47 UTC (rev 
289545)
+++ php/php-src/branches/PHP_5_3/main/php_ini.c 2009-10-11 20:50:53 UTC (rev 
289546)
@@ -42,16 +42,17 @@
 #endif

 #ifdef PHP_WIN32
-#define TRANSLATE_SLASHES(path) \
+#define TRANSLATE_SLASHES_LOWER(path) \
{ \
char *tmp = path; \
while (*tmp) { \
if (*tmp == '\\') *tmp = '/'; \
-   tmp++; \
+   else *tmp = (__isascii(*tmp)) ? _tolower(*tmp) : 
tolower(*tmp); \
+   tmp++; \
} \
}
 #else
-#define TRANSLATE_SLASHES(path)
+#define TRANSLATE_SLASHES_LOWER(path)
 #endif


@@ -287,12 +288,9 @@
key_len = Z_STRLEN_P(arg1) - 
sizeof(PATH) + 1;
is_special_section = 1;
has_per_dir_config = 1;
-#ifdef PHP_WIN32
-   /* make the path lowercase on Windows, 
for case insensitivty. */
-   strlwr(key);

-   TRANSLATE_SLASHES(key);
-#endif
+   /* make the path lowercase on Windows, 
for case insensitivty. Does nothign for other platforms */
+   TRANSLATE_SLASHES_LOWER(key);

/* HOST sections */
} else if (!strncasecmp(Z_STRVAL_P(arg1), 
HOST, sizeof(HOST) - 1)) {

Modified: php/php-src/trunk/main/php_ini.c
===
--- php/php-src/trunk/main/php_ini.c2009-10-11 20:14:47 UTC (rev 289545)
+++ php/php-src/trunk/main/php_ini.c2009-10-11 20:50:53 UTC (rev 289546)
@@ -42,16 +42,17 @@
 #endif

 #ifdef PHP_WIN32
-#define TRANSLATE_SLASHES(path) \
+#define TRANSLATE_SLASHES_LOWER(path) \
{ \
char *tmp = path; \
while (*tmp) { \
if (*tmp == '\\') *tmp = '/'; \
-   tmp++; \
+   else *tmp = (__isascii(*tmp)) ? _tolower(*tmp) : 
tolower(*tmp); \
+   tmp++; \
} \
}
 #else
-#define TRANSLATE_SLASHES(path)
+#define TRANSLATE_SLASHES_LOWER(path)
 #endif


@@ -287,12 +288,9 @@
key_len = Z_STRLEN_P(arg1) - 
sizeof(PATH) + 1;
is_special_section = 1;
has_per_dir_config = 1;
-#ifdef PHP_WIN32
-   /* make the path lowercase on Windows, 
for case insensitivty. */
-   strlwr(key);

-   TRANSLATE_SLASHES(key);
-#endif
+   /* make the path lowercase on Windows, 
for case insensitivty. Does nothign for other platforms */
+   TRANSLATE_SLASHES_LOWER(key);

/* HOST sections */
} else if (!strncasecmp(Z_STRVAL_P(arg1), 
HOST, sizeof(HOST) - 1)) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/main/php_ini.c trunk/main/php_ini.c

2009-10-11 Thread Pierre-Alain Joye
pajoye   Sun, 11 Oct 2009 21:04:35 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=289547

Log:
- fix possible issue in TS environment (we don't have to do that anymore anyway 
in 5.3+)

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 2009-10-11 20:50:53 UTC (rev 
289546)
+++ php/php-src/branches/PHP_5_3/main/php_ini.c 2009-10-11 21:04:35 UTC (rev 
289547)
@@ -507,33 +507,18 @@
}
strlcat(php_ini_search_path, default_location, 
search_path_size);
}
-   efree(default_location);

-   {
-   /* For people running under terminal services, 
GetWindowsDirectory will
-* return their personal Windows directory, so lets add 
the system
-* windows directory too */
-   typedef UINT (WINAPI 
*get_system_windows_directory_func)(char *buffer, UINT size);
-   static get_system_windows_directory_func 
get_system_windows_directory = NULL;
-   HMODULE kern;
-
-   if (get_system_windows_directory == NULL) {
-   kern = LoadLibrary(kernel32.dll);
-   if (kern) {
-   get_system_windows_directory = 
(get_system_windows_directory_func)GetProcAddress(kern, 
GetSystemWindowsDirectoryA);
-   }
+   /* For people running under terminal services, 
GetWindowsDirectory will
+* return their personal Windows directory, so lets add the 
system
+* windows directory too */
+   if (0  GetSystemWindowsDirectory(default_location, 
MAXPATHLEN)) {
+   if (*php_ini_search_path) {
+   strlcat(php_ini_search_path, paths_separator, 
search_path_size);
}
-   if (get_system_windows_directory != NULL) {
-   default_location = (char *) emalloc(MAXPATHLEN 
+ 1);
-   if (0  
get_system_windows_directory(default_location, MAXPATHLEN)) {
-   if (*php_ini_search_path) {
-   strlcat(php_ini_search_path, 
paths_separator, search_path_size);
-   }
-   strlcat(php_ini_search_path, 
default_location, search_path_size);
-   }
-   efree(default_location);
-   }
+   strlcat(php_ini_search_path, default_location, 
search_path_size);
}
+   efree(default_location);
+
 #else
default_location = PHP_CONFIG_FILE_PATH;
if (*php_ini_search_path) {

Modified: php/php-src/trunk/main/php_ini.c
===
--- php/php-src/trunk/main/php_ini.c2009-10-11 20:50:53 UTC (rev 289546)
+++ php/php-src/trunk/main/php_ini.c2009-10-11 21:04:35 UTC (rev 289547)
@@ -505,33 +505,18 @@
}
strlcat(php_ini_search_path, default_location, 
search_path_size);
}
-   efree(default_location);

-   {
-   /* For people running under terminal services, 
GetWindowsDirectory will
-* return their personal Windows directory, so lets add 
the system
-* windows directory too */
-   typedef UINT (WINAPI 
*get_system_windows_directory_func)(char *buffer, UINT size);
-   static get_system_windows_directory_func 
get_system_windows_directory = NULL;
-   HMODULE kern;
-
-   if (get_system_windows_directory == NULL) {
-   kern = LoadLibrary(kernel32.dll);
-   if (kern) {
-   get_system_windows_directory = 
(get_system_windows_directory_func)GetProcAddress(kern, 
GetSystemWindowsDirectoryA);
-   }
+   /* For people running under terminal services, 
GetWindowsDirectory will
+* return their personal Windows directory, so lets add the 
system
+* windows directory too */
+   if (0  GetSystemWindowsDirectory(default_location, 
MAXPATHLEN)) {
+   if (*php_ini_search_path) {
+   strlcat(php_ini_search_path, paths_separator, 
search_path_size);
}
-