diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2006-11-26 17:02:13 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2006-11-26 17:02:13 +0000 |
commit | e6a34313153e7f8deb6c38870c74b518173f9f17 (patch) | |
tree | b84b76ba7d968f7bb601f5a45ec85c0337a590c1 /ext | |
parent | f06eb4bf8b97239dd0b17b7fc81a7337b029b44d (diff) | |
download | php-git-e6a34313153e7f8deb6c38870c74b518173f9f17.tar.gz |
Fixed bug #39623 (thread safety fixes on *nix for putenv() & mime_magic).
Diffstat (limited to 'ext')
-rw-r--r-- | ext/mime_magic/mime_magic.c | 4 | ||||
-rw-r--r-- | ext/standard/basic_functions.c | 5 |
2 files changed, 5 insertions, 4 deletions
diff --git a/ext/mime_magic/mime_magic.c b/ext/mime_magic/mime_magic.c index b34418ef5d..d4ef4dbec0 100644 --- a/ext/mime_magic/mime_magic.c +++ b/ext/mime_magic/mime_magic.c @@ -1388,6 +1388,7 @@ static int ascmagic(unsigned char *buf, int nbytes) char *token; register struct names *p; int small_nbytes; + char *strtok_buf = NULL; /* these are easy, do them first */ @@ -1420,8 +1421,7 @@ static int ascmagic(unsigned char *buf, int nbytes) s = (unsigned char *) memcpy(nbuf, buf, small_nbytes); s[small_nbytes] = '\0'; has_escapes = (memchr(s, '\033', small_nbytes) != NULL); - /* XXX: not multithread safe */ - while ((token = strtok((char *) s, " \t\n\r\f")) != NULL) { + while ((token = php_strtok_r((char *) s, " \t\n\r\f", &strtok_buf)) != NULL) { s = NULL; /* make strtok() keep on tokin' */ for (p = names; p < names + NNAMES; p++) { if (STREQ(p->name, token)) { diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index ce939e1ada..49754349a8 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -4398,7 +4398,8 @@ PHP_FUNCTION(putenv) /* Check the allowed list */ if (BG(sm_allowed_env_vars) && *BG(sm_allowed_env_vars)) { char *allowed_env_vars = estrdup(BG(sm_allowed_env_vars)); - char *allowed_prefix = strtok(allowed_env_vars, ", "); + char *strtok_buf = NULL; + char *allowed_prefix = php_strtok_r(allowed_env_vars, ", ", &strtok_buf); zend_bool allowed = 0; while (allowed_prefix) { @@ -4406,7 +4407,7 @@ PHP_FUNCTION(putenv) allowed = 1; break; } - allowed_prefix = strtok(NULL, ", "); + allowed_prefix = php_strtok_r(NULL, ", ", &strtok_buf); } efree(allowed_env_vars); if (!allowed) { |