diff options
author | Aaron Piotrowski <aaron@trowski.com> | 2016-07-03 22:42:10 -0500 |
---|---|---|
committer | Aaron Piotrowski <aaron@trowski.com> | 2016-07-03 22:42:10 -0500 |
commit | d9a9cf8ecaef891b2369969e9efe9f6261359158 (patch) | |
tree | 04bcc83b3c9be1924007e007e1f508f7229af7ab /ext/session/mod_files.c | |
parent | 583386d59e6b362fe49e51594718a109d0c0cc2f (diff) | |
parent | c2b29a58bc0916e248ba2584564558097b16b51f (diff) | |
download | php-git-d9a9cf8ecaef891b2369969e9efe9f6261359158.tar.gz |
Merge branch 'master' into iterable
Diffstat (limited to 'ext/session/mod_files.c')
-rw-r--r-- | ext/session/mod_files.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index b380cfe86b..7cb99fabcc 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -222,7 +222,7 @@ static void ps_files_open(ps_files *data, const char *key) static int ps_files_write(ps_files *data, zend_string *key, zend_string *val) { - zend_long n = 0; + size_t n = 0; /* PS(id) may be changed by calling session_regenerate_id(). Re-initialization should be tried here. ps_files_open() checks @@ -262,7 +262,7 @@ static int ps_files_write(ps_files *data, zend_string *key, zend_string *val) #endif if (n != ZSTR_LEN(val)) { - if (n == -1) { + if (n == (size_t)-1) { php_error_docref(NULL, E_WARNING, "write failed: %s (%d)", strerror(errno), errno); } else { php_error_docref(NULL, E_WARNING, "write wrote less bytes than requested"); @@ -294,6 +294,11 @@ static int ps_files_cleanup_dir(const char *dirname, zend_long maxlifetime) dirname_len = strlen(dirname); + if (dirname_len >= MAXPATHLEN) { + php_error_docref(NULL, E_NOTICE, "ps_files_cleanup_dir: dirname(%s) is too long", dirname); + return (0); + } + /* Prepare buffer (dirname never changes) */ memcpy(buf, dirname, dirname_len); buf[dirname_len] = PHP_DIR_SEPARATOR; |