Line 37 | Line 37 |
---|
$this->cache_dir = !is_null($cache_dir) ? $cache_dir : $phpbb_container->getParameter('core.cache_dir'); $this->filesystem = new \phpbb\filesystem\filesystem();
|
$this->cache_dir = !is_null($cache_dir) ? $cache_dir : $phpbb_container->getParameter('core.cache_dir'); $this->filesystem = new \phpbb\filesystem\filesystem();
|
if (!is_dir($this->cache_dir))
| if ($this->filesystem->is_writable(dirname($this->cache_dir)) && !is_dir($this->cache_dir))
|
{
|
{
|
@mkdir($this->cache_dir, 0777, true);
| mkdir($this->cache_dir, 0777, true);
|
} }
| } }
|
Line 328 | Line 328 |
---|
}
return $query_result;
|
}
return $query_result;
|
| }
/** * Cleanup when loading invalid data global file * * @param string $file Filename * @param resource $handle * * @return void */ private function cleanup_invalid_data_global(string $file, $handle): void { if (is_resource($handle)) { fclose($handle); }
$this->vars = $this->var_expires = []; $this->is_modified = false;
$this->remove_file($file);
|
}
/**
| }
/**
|
Line 372 | Line 393 |
---|
if (!is_numeric($bytes) || ($bytes = (int) $bytes) === 0) {
|
if (!is_numeric($bytes) || ($bytes = (int) $bytes) === 0) {
|
// We cannot process the file without a valid number of bytes // so we discard it fclose($handle);
$this->vars = $this->var_expires = array(); $this->is_modified = false;
$this->remove_file($file);
| $this->cleanup_invalid_data_global($file, $handle);
|
return false; }
| return false; }
|
Line 392 | Line 406 |
---|
}
$var_name = substr(fgets($handle), 0, -1);
|
}
$var_name = substr(fgets($handle), 0, -1);
|
| $data_length = $bytes - strlen($var_name);
if ($data_length <= 0) { $this->cleanup_invalid_data_global($file, $handle);
return false; }
|
// Read the length of bytes that consists of data.
|
// Read the length of bytes that consists of data.
|
$data = fread($handle, $bytes - strlen($var_name));
| $data = fread($handle, $data_length);
|
$data = @unserialize($data);
// Don't use the data if it was invalid
| $data = @unserialize($data);
// Don't use the data if it was invalid
|