]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorChristoph M. Becker <cmbecker69@gmx.de>
Tue, 11 Feb 2020 11:07:19 +0000 (12:07 +0100)
committerChristoph M. Becker <cmbecker69@gmx.de>
Tue, 11 Feb 2020 11:08:25 +0000 (12:08 +0100)
* PHP-7.4:
  Fix #79254: getenv() w/o arguments not showing changes

1  2 
main/php_variables.c

index 8edbcac628bb97848cd1c2ab2b5693d16da39698,1a40c2a19fd22fd19e00db05d3613cbdeddc93ca..6fb6ca000d8acea5ce5469841e386492b00e9e8a
@@@ -545,32 -547,51 +545,45 @@@ static zend_always_inline void import_e
        zval val;
        zend_ulong idx;
  
 -#ifndef PHP_WIN32
 -      char **env;
 -#else
 -      char *environment, *env;
 -#endif
 -
+       p = strchr(env, '=');
+       if (!p
+               || p == env
+               || !valid_environment_name(env, p)) {
+               /* malformed entry? */
+               return;
+       }
+       name_len = p - env;
+       p++;
+       len = strlen(p);
+       if (len == 0) {
+               ZVAL_EMPTY_STRING(&val);
+       } else if (len == 1) {
+               ZVAL_INTERNED_STR(&val, ZSTR_CHAR((zend_uchar)*p));
+       } else {
+               ZVAL_NEW_STR(&val, zend_string_init(p, len, 0));
+       }
+       if (ZEND_HANDLE_NUMERIC_STR(env, name_len, idx)) {
+               zend_hash_index_update(ht, idx, &val);
+       } else {
+               php_register_variable_quick(env, name_len, &val, ht);
+       }
+ }
+ void _php_import_environment_variables(zval *array_ptr)
+ {
        tsrm_env_lock();
  
-       for (env = environ; env != NULL && *env != NULL; env++) {
-               p = strchr(*env, '=');
-               if (!p
-                || p == *env
-                || !valid_environment_name(*env, p)) {
-                       /* malformed entry? */
-                       continue;
-               }
-               name_len = p - *env;
-               p++;
-               len = strlen(p);
-               if (len == 0) {
-                       ZVAL_EMPTY_STRING(&val);
-               } else if (len == 1) {
-                       ZVAL_INTERNED_STR(&val, ZSTR_CHAR((zend_uchar)*p));
-               } else {
-                       ZVAL_NEW_STR(&val, zend_string_init(p, len, 0));
-               }
-               if (ZEND_HANDLE_NUMERIC_STR(*env, name_len, idx)) {
-                       zend_hash_index_update(Z_ARRVAL_P(array_ptr), idx, &val);
-               } else {
-                       php_register_variable_quick(*env, name_len, &val, Z_ARRVAL_P(array_ptr));
-               }
+ #ifndef PHP_WIN32
 -      for (env = environ; env != NULL && *env != NULL; env++) {
++      for (char **env = environ; env != NULL && *env != NULL; env++) {
+               import_environment_variable(Z_ARRVAL_P(array_ptr), *env);
+       }
+ #else
 -      environment = GetEnvironmentStringsA();
 -      for (env = environment; env != NULL && *env; env += strlen(env) + 1) {
++      char *environment = GetEnvironmentStringsA();
++      for (char *env = environment; env != NULL && *env; env += strlen(env) + 1) {
+               import_environment_variable(Z_ARRVAL_P(array_ptr), env);
        }
+       FreeEnvironmentStringsA(environment);
+ #endif
  
        tsrm_env_unlock();
  }