summaryrefslogtreecommitdiff
path: root/ext/standard/basic_functions.c
diff options
context:
space:
mode:
authorJoe Watkins <krakjoe@php.net>2019-03-29 08:01:31 +0100
committerJoe Watkins <krakjoe@php.net>2019-03-29 19:06:02 +0100
commit072eb6dd77b079a6f90ca5b155f9b0add1b5f2d4 (patch)
treeb808bffb52c45033bfae2cb09d9dbd0283d0e0cf /ext/standard/basic_functions.c
parent61ad294f26fa7941a26361a68cf6a01b8a2c3e4f (diff)
downloadphp-git-072eb6dd77b079a6f90ca5b155f9b0add1b5f2d4.tar.gz
tsrm environment lock
Diffstat (limited to 'ext/standard/basic_functions.c')
-rw-r--r--ext/standard/basic_functions.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index d281730afa..ba4b5ee68c 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -3832,7 +3832,9 @@ PHP_RSHUTDOWN_FUNCTION(basic) /* {{{ */
ZVAL_UNDEF(&BG(strtok_zval));
BG(strtok_string) = NULL;
#ifdef HAVE_PUTENV
+ tsrm_env_lock();
zend_hash_destroy(&BG(putenv_ht));
+ tsrm_env_unlock();
#endif
BG(mt_rand_is_seeded) = 0;
@@ -4141,11 +4143,22 @@ PHP_FUNCTION(getenv)
}
}
#else
+
+ tsrm_env_lock();
+
/* system method returns a const */
ptr = getenv(str);
+
if (ptr) {
- RETURN_STRING(ptr);
+ RETVAL_STRING(ptr);
}
+
+ tsrm_env_unlock();
+
+ if (ptr) {
+ return;
+ }
+
#endif
RETURN_FALSE;
}
@@ -4196,6 +4209,7 @@ PHP_FUNCTION(putenv)
}
#endif
+ tsrm_env_lock();
zend_hash_str_del(&BG(putenv_ht), pe.key, pe.key_len);
/* find previous value */
@@ -4256,6 +4270,7 @@ PHP_FUNCTION(putenv)
tzset();
}
#endif
+ tsrm_env_unlock();
#if defined(PHP_WIN32)
free(keyw);
free(valw);