--- a/the-events-calendar/common/vendor/vendor-prefixed/autoload.php
+++ b/the-events-calendar/common/vendor/vendor-prefixed/autoload.php
@@ -19,4 +19,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInit32e50cbf9d69b270942f12dec8f66cd8::getLoader();
+return ComposerAutoloaderInit3e6cb64ce382810755e1ea0de130a8b7::getLoader();
--- a/the-events-calendar/common/vendor/vendor-prefixed/composer/autoload_real.php
+++ b/the-events-calendar/common/vendor/vendor-prefixed/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit32e50cbf9d69b270942f12dec8f66cd8
+class ComposerAutoloaderInit3e6cb64ce382810755e1ea0de130a8b7
{
private static $loader;
@@ -24,12 +24,12 @@
require __DIR__ . '/platform_check.php';
- spl_autoload_register(array('ComposerAutoloaderInit32e50cbf9d69b270942f12dec8f66cd8', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInit3e6cb64ce382810755e1ea0de130a8b7', 'loadClassLoader'), true, true);
self::$loader = $loader = new TECCommonComposerAutoloadClassLoader(dirname(__DIR__));
- spl_autoload_unregister(array('ComposerAutoloaderInit32e50cbf9d69b270942f12dec8f66cd8', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInit3e6cb64ce382810755e1ea0de130a8b7', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
- call_user_func(TECCommonComposerAutoloadComposerStaticInit32e50cbf9d69b270942f12dec8f66cd8::getInitializer($loader));
+ call_user_func(TECCommonComposerAutoloadComposerStaticInit3e6cb64ce382810755e1ea0de130a8b7::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
--- a/the-events-calendar/common/vendor/vendor-prefixed/composer/autoload_static.php
+++ b/the-events-calendar/common/vendor/vendor-prefixed/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace TECCommonComposerAutoload;
-class ComposerStaticInit32e50cbf9d69b270942f12dec8f66cd8
+class ComposerStaticInit3e6cb64ce382810755e1ea0de130a8b7
{
public static $prefixLengthsPsr4 = array (
'T' =>
@@ -584,9 +584,9 @@
public static function getInitializer(ClassLoader $loader)
{
return Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit32e50cbf9d69b270942f12dec8f66cd8::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInit32e50cbf9d69b270942f12dec8f66cd8::$prefixDirsPsr4;
- $loader->classMap = ComposerStaticInit32e50cbf9d69b270942f12dec8f66cd8::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticInit3e6cb64ce382810755e1ea0de130a8b7::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInit3e6cb64ce382810755e1ea0de130a8b7::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit3e6cb64ce382810755e1ea0de130a8b7::$classMap;
}, null, ClassLoader::class);
}
--- a/the-events-calendar/src/Tribe/Aggregator/Record/CSV.php
+++ b/the-events-calendar/src/Tribe/Aggregator/Record/CSV.php
@@ -309,6 +309,7 @@
* Returns the path to the CSV file.
*
* @since 4.6.15
+ * @since 6.15.17.1 Strengthen file type and location checks during aggregator imports.
*
* @return bool|false|string Either the absolute path to the CSV file or `false` on failure.
*/
@@ -319,6 +320,21 @@
$file_path = realpath( $this->meta['file'] );
}
+ if ( $file_path ) {
+ // Only allow CSV files — reject any other extension to prevent file disclosure.
+ $filetype = wp_check_filetype( $file_path );
+ if ( empty( $filetype['ext'] ) || 'csv' !== strtolower( $filetype['ext'] ) ) {
+ return false;
+ }
+
+ // Restrict the file to the WordPress uploads directory to prevent path traversal.
+ $upload_info = wp_upload_dir();
+ $uploads_base = realpath( $upload_info['basedir'] );
+ if ( false === $uploads_base || 0 !== strpos( $file_path, trailingslashit( $uploads_base ) ) ) {
+ return false;
+ }
+ }
+
return $file_path && file_exists( $file_path ) ? $file_path : false;
}
--- a/the-events-calendar/src/Tribe/Main.php
+++ b/the-events-calendar/src/Tribe/Main.php
@@ -40,7 +40,7 @@
const POSTTYPE = 'tribe_events';
const VENUE_POST_TYPE = 'tribe_venue';
const ORGANIZER_POST_TYPE = 'tribe_organizer';
- const VERSION = '6.15.17';
+ const VERSION = '6.15.17.1';
/**
* Min Pro Addon.
--- a/the-events-calendar/the-events-calendar.php
+++ b/the-events-calendar/the-events-calendar.php
@@ -2,7 +2,7 @@
/**
* Plugin Name: The Events Calendar
* Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
- * Version: 6.15.17
+ * Version: 6.15.17.1
* Requires at least: 6.7
* Requires PHP: 7.4
* Author: The Events Calendar
--- a/the-events-calendar/vendor/composer/installed.php
+++ b/the-events-calendar/vendor/composer/installed.php
@@ -1,9 +1,9 @@
<?php return array(
'root' => array(
'name' => 'the-events-calendar/the-events-calendar',
- 'pretty_version' => 'dev-release/M26.banette',
- 'version' => 'dev-release/M26.banette',
- 'reference' => 'fa99c3a26df2970065245a1bfacf3985c8e9235f',
+ 'pretty_version' => 'dev-release/M26.blaziken',
+ 'version' => 'dev-release/M26.blaziken',
+ 'reference' => '5daf5c19ecea7a934f7ae292542d9678f1386a58',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -11,9 +11,9 @@
),
'versions' => array(
'the-events-calendar/the-events-calendar' => array(
- 'pretty_version' => 'dev-release/M26.banette',
- 'version' => 'dev-release/M26.banette',
- 'reference' => 'fa99c3a26df2970065245a1bfacf3985c8e9235f',
+ 'pretty_version' => 'dev-release/M26.blaziken',
+ 'version' => 'dev-release/M26.blaziken',
+ 'reference' => '5daf5c19ecea7a934f7ae292542d9678f1386a58',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),