Skip to content

Commit 368e395

Browse files
committed
Fix _real_escape behavior for non-scalar values
1 parent a68b358 commit 368e395

2 files changed

Lines changed: 6 additions & 77 deletions

File tree

.github/workflows/wp-tests-phpunit-run.js

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ const expectedErrors = [
2020
'Tests_Comment_WpComment::test_get_instance_should_succeed_for_float_that_is_equal_to_post_id',
2121
'Tests_Cron_getCronArray::test_get_cron_array_output_validation with data set "null"',
2222
'Tests_DB_Charset::test_strip_invalid_text',
23-
'Tests_DB_RealEscape::test_real_escape_input_type_handling with data set "empty array"',
24-
'Tests_DB_RealEscape::test_real_escape_input_type_handling with data set "non-empty array"',
25-
'Tests_DB_RealEscape::test_real_escape_input_type_handling with data set "null"',
26-
'Tests_DB_RealEscape::test_real_escape_input_type_handling with data set "simple object"',
2723
'Tests_DB::test_db_reconnect',
2824
'Tests_DB::test_get_col_info',
2925
'Tests_DB::test_prepare_should_respect_the_allow_unsafe_unquoted_parameters_property with data set "escaped-false-1"',
@@ -44,39 +40,8 @@ const expectedErrors = [
4440
'Tests_DB::test_set_allowed_incompatible_sql_mode',
4541
'Tests_DB::test_set_incompatible_sql_mode',
4642
'Tests_DB::test_set_sql_mode',
47-
'Tests_Import_Import::test_double_import',
48-
'Tests_Import_Import::test_slashes_should_not_be_stripped',
49-
'Tests_Import_Import::test_small_import',
50-
'Tests_Import_Postmeta::test_serialized_postmeta_no_cdata',
51-
'Tests_Import_Postmeta::test_serialized_postmeta_with_cdata',
52-
'Tests_Import_Postmeta::test_serialized_postmeta_with_evil_stuff_in_cdata',
53-
'Tests_Import_Postmeta::test_utw_postmeta',
54-
'Tests_Meta_Query::test_convert_null_value_to_empty_string',
55-
'Tests_Meta_Query::test_null_value_sql',
56-
'Tests_Option_WpPrimeOptionCaches::test_get_option_should_return_identical_value_when_pre_primed_by_wp_prime_option_caches with data set "null"',
57-
'Tests_Option_WpPrimeOptionCaches::test_wp_prime_option_caches_cache_should_be_identical_to_get_option_cache with data set "null"',
58-
'Tests_Option_WpPrimeOptionCaches::test_wp_prime_option_caches_does_not_trigger_db_queries_for_alloptions with data set "null"',
59-
'Tests_Option_WpPrimeOptionCaches::test_wp_prime_option_caches_does_not_trigger_db_queries_repriming_options with data set "null"',
60-
'Tests_Post_Nav_Menu::test_class_applied_to_front_page_item',
61-
'Tests_Post_Nav_Menu::test_class_applied_to_privacy_policy_page_item',
62-
'Tests_Post_Nav_Menu::test_class_not_applied_to_taxonomies_with_same_id_as_front_page_item',
63-
'Tests_Post_Nav_Menu::test_iri_current_menu_item with data set #0',
64-
'Tests_Post_Nav_Menu::test_iri_current_menu_item with data set #1',
65-
'Tests_Post_Nav_Menu::test_iri_current_menu_item with data set #2',
66-
'Tests_Post_Nav_Menu::test_iri_current_menu_item with data set #3',
67-
'Tests_Post_Nav_Menu::test_iri_current_menu_item with data set #4',
68-
'Tests_Post_Nav_Menu::test_iri_current_menu_item with data set #5',
69-
'Tests_Post_Nav_Menu::test_no_front_page_class_applied',
70-
'Tests_Post_Nav_Menu::test_no_privacy_policy_class_applied',
71-
'Tests_Post_Nav_Menu::test_orphan_nav_menu_item',
72-
'Tests_Post_Nav_Menu::test_parent_ancestor_for_post_archive',
73-
'Tests_Post_Nav_Menu::test_wp_get_nav_menu_items_with_taxonomy_term',
7443
'Tests_Post_wpPost::test_get_instance_should_succeed_for_float_that_is_equal_to_post_id',
7544
'Tests_Post::test_stick_post_with_unexpected_sticky_posts_option with data set "null"',
76-
'Tests_Post::test_wp_tag_cloud_link_with_post_type',
77-
'Tests_Term_getTerms::test_wp_delete_term_should_invalidate_cache',
78-
'Tests_Term_GetTheTerms::test_term_cache_should_be_invalidated_on_remove_object_terms',
79-
'Tests_Term_GetTheTerms::test_term_cache_should_be_invalidated_on_set_object_terms',
8045
];
8146

8247
const expectedFailures = [
@@ -115,46 +80,7 @@ const expectedFailures = [
11580
'Tests_Menu_Walker_Nav_Menu::test_start_el_with_empty_attributes with data set #5',
11681
'Tests_Menu_Walker_Nav_Menu::test_start_el_with_empty_attributes with data set #6',
11782
'Tests_Menu_Walker_Nav_Menu::test_start_el_with_empty_attributes with data set #7',
118-
'Tests_Menu_wpNavMenu::test_parent_with_higher_id_should_not_error',
119-
'Tests_Menu_wpNavMenu::test_wp_nav_menu_should_have_has_children_class_without_custom_depth',
12083
'Tests_Menu_wpNavMenu::test_wp_nav_menu_should_not_have_has_children_class_with_custom_depth',
121-
'Tests_Post_Nav_Menu::test_wp_get_nav_menu_items_cache_primes_posts',
122-
'Tests_Post_Nav_Menu::test_wp_get_nav_menu_items_cache_primes_terms',
123-
'Tests_Post_Nav_Menu::test_wp_nav_menu_empty_container',
124-
'Tests_Post_Nav_Menu::test_wp_nav_menu_whitespace_options',
125-
'Tests_Sitemaps_Sitemaps::test_get_sitemap_entries_post_with_permalinks',
126-
'Tests_Sitemaps_Sitemaps::test_get_sitemap_entries',
127-
'Tests_Sitemaps_wpSitemapsTaxonomies::test_get_sitemap_entries_custom_taxonomies',
128-
'Tests_Sitemaps_wpSitemapsTaxonomies::test_get_url_list_custom_taxonomy',
129-
'Tests_Sitemaps_wpSitemapsTaxonomies::test_get_url_list_taxonomies',
130-
'Tests_Term_getTerms::test_get_terms_cache_should_be_missed_when_passing_number',
131-
'Tests_Term_getTerms::test_get_terms_cache',
132-
'Tests_Term_getTerms::test_get_terms_grandparent_zero',
133-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_count_hierarchical_false',
134-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_count',
135-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_idname_hierarchical_false',
136-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_idname',
137-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_idparent_hierarchical_false',
138-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_idparent',
139-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_ids_hierarchical_false',
140-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_ids',
141-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_idslug_hierarchical_false',
142-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_idslug',
143-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_names_hierarchical_false',
144-
'Tests_Term_getTerms::test_get_terms_hierarchical_tax_hide_empty_true_fields_names',
145-
'Tests_Term_getTerms::test_get_terms_parent_zero',
146-
'Tests_Term_getTerms::test_get_terms_seven_levels_deep',
147-
'Tests_Term_getTerms::test_get_terms_without_update_get_terms_cache',
148-
'Tests_Term_getTerms::test_hierarchical_false_with_child_of_and_direct_child',
149-
'Tests_Term_getTerms::test_hierarchical_should_recurse_properly_for_all_taxonomies',
150-
'Tests_Term_getTerms::test_hierarchical_true_parent_overrides_child_of',
151-
'Tests_Term_getTerms::test_hierarchical_true_with_child_of_should_return_grandchildren',
152-
'Tests_Term_getTerms::test_hierarchical_true_with_parent',
153-
'Tests_Term_getTerms::test_meta_query_args_only',
154-
'Tests_Term_GetTheTerms::test_count_should_not_be_improperly_cached',
155-
'Tests_Term::test_wp_count_terms',
156-
'WP_Test_REST_Categories_Controller::test_get_items_hide_empty_arg',
157-
'WP_Test_REST_Tags_Controller::test_get_items_hide_empty_arg',
15884
];
15985

16086
console.log( 'Running WordPress PHPUnit tests with expected failures tracking...' );

wp-includes/sqlite/class-wp-sqlite-db.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,15 @@ public function select( $db, $dbh = null ) {
9999
*
100100
* @see wpdb::_real_escape()
101101
*
102-
* @param string $str The string to escape.
102+
* @param string $data The string to escape.
103103
*
104104
* @return string escaped
105105
*/
106-
public function _real_escape( $str ) {
107-
return addslashes( $str );
106+
public function _real_escape( $data ) {
107+
if ( ! is_scalar( $data ) ) {
108+
return '';
109+
}
110+
return addslashes( $data );
108111
}
109112

110113
/**

0 commit comments

Comments
 (0)