diff options
| author | Sara Golemon <pollita@php.net> | 2014-08-19 13:22:14 -0700 |
|---|---|---|
| committer | Sara Golemon <pollita@php.net> | 2014-08-19 13:22:14 -0700 |
| commit | a309dda7771503b5972b5faec2f3234ed0637781 (patch) | |
| tree | 6dba86bc5c7a340f28844571808025950c1d7c27 | |
| parent | fae17a00f556b7c1a2221289c46403bfb4367034 (diff) | |
| parent | ac4569621dc8762862dca6d39adf4ceb39e7e00b (diff) | |
| download | php-git-a309dda7771503b5972b5faec2f3234ed0637781.tar.gz | |
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5:
Switch use of strtok() to gd_strtok_r()
| -rw-r--r-- | NEWS | 3 | ||||
| -rw-r--r-- | ext/gd/libgd/gdft.c | 6 |
2 files changed, 7 insertions, 2 deletions
@@ -5,6 +5,9 @@ PHP NEWS - Fileinfo: . Fixed bug #67716 (Segfault in cdf.c). (CVE-2014-3587) (Remi) +- GD + . Made fontFetch's path parser thread-safe. (Sara) + 14 Aug 2014, PHP 5.6.0 Release Candidate 4 - COM: diff --git a/ext/gd/libgd/gdft.c b/ext/gd/libgd/gdft.c index f4ee639081..3d7b46c417 100644 --- a/ext/gd/libgd/gdft.c +++ b/ext/gd/libgd/gdft.c @@ -390,9 +390,10 @@ static void *fontFetch (char **error, void *key) fontlist = gdEstrdup(a->fontlist); /* - * Must use gd_strtok_r else pointer corrupted by strtok in nested loop. + * Must use gd_strtok_r becasuse strtok() isn't thread safe */ for (name = gd_strtok_r (fontlist, LISTSEPARATOR, &strtok_ptr); name; name = gd_strtok_r (0, LISTSEPARATOR, &strtok_ptr)) { + char *strtok_ptr_path; /* make a fresh copy each time - strtok corrupts it. */ path = gdEstrdup (fontsearchpath); @@ -408,7 +409,8 @@ static void *fontFetch (char **error, void *key) break; } } - for (dir = strtok (path, PATHSEPARATOR); dir; dir = strtok (0, PATHSEPARATOR)) { + for (dir = gd_strtok_r (path, PATHSEPARATOR, &strtok_ptr_path); dir; + dir = gd_strtok_r (0, PATHSEPARATOR, &strtok_ptr_path)) { if (!strcmp(dir, ".")) { TSRMLS_FETCH(); #if HAVE_GETCWD |
