diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-27 13:09:14 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-27 16:11:58 +0200 |
commit | 40d6147dd0d43f0c114847bf3965b7d167cf752d (patch) | |
tree | fcd1420c672662086008b95019ded60705e26058 | |
parent | c3132781ecb7b6ff9ca4c8ccb64847fdeb26d2f4 (diff) | |
download | php-git-40d6147dd0d43f0c114847bf3965b7d167cf752d.tar.gz |
Fix opcache blacklist leak
Don't recompute (and leak) the regex for every glob element, only
do this once at the end.
-rw-r--r-- | ext/opcache/zend_accelerator_blacklist.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/ext/opcache/zend_accelerator_blacklist.c b/ext/opcache/zend_accelerator_blacklist.c index ab02079bd1..889fcabd79 100644 --- a/ext/opcache/zend_accelerator_blacklist.c +++ b/ext/opcache/zend_accelerator_blacklist.c @@ -232,11 +232,7 @@ static inline void zend_accel_blacklist_allocate(zend_blacklist *blacklist) } } -#ifdef HAVE_GLOB static void zend_accel_blacklist_loadone(zend_blacklist *blacklist, char *filename) -#else -void zend_accel_blacklist_load(zend_blacklist *blacklist, char *filename) -#endif { char buf[MAXPATHLEN + 1], real_path[MAXPATHLEN + 1], *blacklist_path = NULL; FILE *fp; @@ -315,12 +311,11 @@ void zend_accel_blacklist_load(zend_blacklist *blacklist, char *filename) if (blacklist_path) { free(blacklist_path); } - zend_accel_blacklist_update_regexp(blacklist); } -#ifdef HAVE_GLOB void zend_accel_blacklist_load(zend_blacklist *blacklist, char *filename) { +#ifdef HAVE_GLOB glob_t globbuf; int ret; unsigned int i; @@ -340,8 +335,11 @@ void zend_accel_blacklist_load(zend_blacklist *blacklist, char *filename) } globfree(&globbuf); } -} +#else + zend_accel_blacklist_loadone(blacklist, filename); #endif + zend_accel_blacklist_update_regexp(blacklist); +} zend_bool zend_accel_blacklist_is_blacklisted(zend_blacklist *blacklist, char *verify_path, size_t verify_path_len) { |