summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-06-27 13:09:14 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-06-27 16:11:58 +0200
commit40d6147dd0d43f0c114847bf3965b7d167cf752d (patch)
treefcd1420c672662086008b95019ded60705e26058
parentc3132781ecb7b6ff9ca4c8ccb64847fdeb26d2f4 (diff)
downloadphp-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.c12
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)
{