Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/elementor/elementor.php
+++ b/elementor/elementor.php
@@ -3,7 +3,7 @@
* Plugin Name: Elementor
* Description: The Elementor Website Builder has it all: drag and drop page builder, Atomic Editor, pixel perfect design, global and reusable style systems, mobile responsive editing, and more. Get started now!
* Plugin URI: https://elementor.com/?utm_source=wp-plugins&utm_campaign=plugin-uri&utm_medium=wp-dash
- * Version: 4.1.0
+ * Version: 4.1.1
* Author: Elementor.com
* Author URI: https://elementor.com/?utm_source=wp-plugins&utm_campaign=author-uri&utm_medium=wp-dash
* Requires PHP: 7.4
@@ -28,7 +28,7 @@
exit; // Exit if accessed directly.
}
-define( 'ELEMENTOR_VERSION', '4.1.0' );
+define( 'ELEMENTOR_VERSION', '4.1.1' );
define( 'ELEMENTOR__FILE__', __FILE__ );
define( 'ELEMENTOR_PLUGIN_BASE', plugin_basename( ELEMENTOR__FILE__ ) );
--- a/elementor/includes/template-library/sources/local.php
+++ b/elementor/includes/template-library/sources/local.php
@@ -15,7 +15,6 @@
use ElementorUser;
use ElementorCoreIsolationWordpress_Adapter;
use ElementorCoreIsolationWordpress_Adapter_Interface;
-use ElementorCoreIsolationElementor_Adapter;
use ElementorCoreIsolationElementor_Adapter_Interface;
use ElementorModulesEditorOneClassesMenu_Data_Provider;
use ElementorIncludesTemplateLibrarySourcesAdminMenuItemsEditor_One_Saved_Templates_Menu;
@@ -1998,31 +1997,16 @@
$this->set_wordpress_adapter( new WordPress_Adapter() );
}
- if ( ! $this->should_check_permissions( $args ) ) {
- return true;
- }
-
$post_id = intval( $args['template_id'] );
$post_status = $this->wordpress_adapter->get_post_status( $post_id );
- $is_private_or_non_published = ( 'private' === $post_status && ! $this->wordpress_adapter->current_user_can( 'read_private_posts', $post_id ) ) || ( 'publish' !== $post_status );
-
- $can_read_template = ! $is_private_or_non_published || $this->wordpress_adapter->current_user_can( 'edit_post', $post_id );
-
- return apply_filters( 'elementor/template-library/is_allowed_to_read_template', $can_read_template, $args );
- }
- private function should_check_permissions( array $args ): bool {
- if ( null === $this->elementor_adapter ) {
- $this->set_elementor_adapter( new Elementor_Adapter() );
+ if ( 'publish' === $post_status && ! post_password_required( $post_id ) ) {
+ return true;
}
- $check_permissions = isset( $args['check_permissions'] ) && false === $args['check_permissions'];
-
- if ( $check_permissions ) {
- return false;
- }
+ $can_read_template = $this->wordpress_adapter->current_user_can( 'edit_post', $post_id );
- return true;
+ return apply_filters( 'elementor/template-library/is_allowed_to_read_template', $can_read_template, $args );
}
public function set_wordpress_adapter( Wordpress_Adapter_Interface $wordpress_adapter ) {
--- a/elementor/modules/atomic-widgets/props-resolver/props-resolver.php
+++ b/elementor/modules/atomic-widgets/props-resolver/props-resolver.php
@@ -74,10 +74,17 @@
return null;
}
- $value['value'] = array_map(
- fn( $item ) => $this->resolve_item( $item, null, $prop_type->get_item_type() ),
- $value['value']
- );
+ $resolved_items = [];
+
+ foreach ( $value['value'] as $item ) {
+ $resolved = $this->resolve_item( $item, null, $prop_type->get_item_type() );
+
+ if ( null !== $resolved ) {
+ $resolved_items[] = $resolved;
+ }
+ }
+
+ $value['value'] = $resolved_items;
}
$transformer = $this->transformers_registry->get( $value['$$type'] );
--- a/elementor/modules/site-navigation/data/endpoints/duplicate-post.php
+++ b/elementor/modules/site-navigation/data/endpoints/duplicate-post.php
@@ -49,7 +49,7 @@
$post = get_post( $post_id );
- if ( ! User::is_current_user_can_edit_post_type( $post->post_type ) ) {
+ if ( ! User::is_current_user_can_edit( $post_id ) ) {
$sanitized_post_type = esc_html( str_replace( '%', '%%', $post->post_type ) );
return new WP_Error( 401, sprintf( 'User dont have capability to create page of type - %s.', $sanitized_post_type ), [ 'status' => 401 ] );
}
--- a/elementor/vendor/composer/installed.php
+++ b/elementor/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'elementor/elementor',
'pretty_version' => '4.01.x-dev',
'version' => '4.01.9999999.9999999-dev',
- 'reference' => '07793f7c65cb1039ec3e8d123eb3e9fc8cda282c',
+ 'reference' => '3bef116ced70900f4fbf141f70df2a43374893b5',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'elementor/elementor' => array(
'pretty_version' => '4.01.x-dev',
'version' => '4.01.9999999.9999999-dev',
- 'reference' => '07793f7c65cb1039ec3e8d123eb3e9fc8cda282c',
+ 'reference' => '3bef116ced70900f4fbf141f70df2a43374893b5',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),