[wp-trac] [WordPress Trac] #31503: code flaw in function wp_clean_update_cache

WordPress Trac noreply at wordpress.org
Mon Mar 2 12:57:09 UTC 2015


#31503: code flaw in function wp_clean_update_cache
--------------------------+--------------------
 Reporter:  juggledad     |       Owner:
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  4.2
Component:  General       |     Version:  4.1.1
 Severity:  normal        |  Resolution:
 Keywords:                |     Focuses:
--------------------------+--------------------
Changes (by SergeyBiryukov):

 * milestone:  Awaiting Review => 4.2


Old description:

> I may be mistaken, but there seems to be a flaw in wp_clean_update_cache.
> here is teh existing code:
> /**
>  * Clear existing update caches for plugins, themes, and core.
>  *
>  * @since 4.1.0
>  */
> function wp_clean_update_cache() {
>         if ( function_exists( 'wp_clean_plugins_cache' ) ) {
>                 wp_clean_plugins_cache();
>         } else {
>                 delete_site_transient( 'update_plugins' );
>         }
>         wp_clean_plugins_cache();
>         wp_clean_themes_cache();
>         delete_site_transient( 'update_core' );
> }
> If the function 'wp_clean_plugins_cache' exists, then it is called twice,
> once in the if...else and once outside the if...else.
> If the function wp_clean_plugins_cache does not exist then
> delete_site_transient( 'update_plugins' ); will run (the else) but then
> you will get a fatal error 'call to an undefined function.
>
> Since no one is getting the fatal error, then the else must never be
> running and why have two calls to teh same function?

New description:

 I may be mistaken, but there seems to be a flaw in wp_clean_update_cache.
 here is teh existing code:
 {{{
 /**
  * Clear existing update caches for plugins, themes, and core.
  *
  * @since 4.1.0
  */
 function wp_clean_update_cache() {
         if ( function_exists( 'wp_clean_plugins_cache' ) ) {
                 wp_clean_plugins_cache();
         } else {
                 delete_site_transient( 'update_plugins' );
         }
         wp_clean_plugins_cache();
         wp_clean_themes_cache();
         delete_site_transient( 'update_core' );
 }
 }}}
 If the function 'wp_clean_plugins_cache' exists, then it is called twice,
 once in the if...else and once outside the if...else.
 If the function wp_clean_plugins_cache does not exist then
 delete_site_transient( 'update_plugins' ); will run (the else) but then
 you will get a fatal error 'call to an undefined function.

 Since no one is getting the fatal error, then the else must never be
 running and why have two calls to teh same function?

--

Comment:

 Introduced in [30856] ([30870] for the 4.1 branch).

--
Ticket URL: <https://core.trac.wordpress.org/ticket/31503#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list