[wp-trac] [WordPress Trac] #50159: Simplepie 1.5.5 - code review and modifications - fix SimplePie cache bug

WordPress Trac noreply at wordpress.org
Thu May 14 14:41:23 UTC 2020


#50159: Simplepie 1.5.5 - code review and modifications - fix SimplePie cache bug
--------------------------+------------------------------
 Reporter:  arena         |       Owner:  (none)
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  Awaiting Review
Component:  Feeds         |     Version:  trunk
 Severity:  normal        |  Resolution:
 Keywords:  has-patch     |     Focuses:
--------------------------+------------------------------

Comment (by afragen):

 Replying to [comment:21 arena]:
 > @afragen
 >
 > i am sorry but your code as shown in
 > https://github.com/afragen/wordpress-beta-
 tester/blob/develop/src/WPBT/WPBT_Beta_RC.php#L520-L522
 > do not match with simplepie cache current code
 >
 > your code (note that you "md5" the feed url) :
 >
 > {{{#!php
 > $transient = md5(
 'https://wordpress.org/news/category/development/feed/' );
 > delete_transient( "feed_{$transient}" );
 > delete_transient( "feed_mod_{$transient}" );
 > }}}
 >
 > current wordpress code in wordpress extended simplepie cache class in
 wp-includes/class-wp-feed-cache-transient.php is (filename being the url
 feed)
 >
 > {{{#!php
 > $this->name     = 'feed_' . $filename;
 > $this->mod_name = 'feed_mod_' . $filename;
 > }}}
 >
 > so your code is not working  (current simplepie cache code either)!

 1.  if you find a problem with my code on the Beta Tester plugin, open an
 issue on GitHub.
 2. My code really does work correctly. I have stepped through everything
 in xDebug and it has been checked by another developer as well.

 Let me explain the flaw in your logic.

 SimplePie is capable of using several different methods of creating the
 hash used in the transient. The default  SimplePie `cache_name_function =
 'md5'`. Your patch will have the effect of
 {{{
 md5( md5( $filename ) );
 }}}

 The following is from your latest patch. It is wrong and will break
 things. There is no reason for adding `:$extension` when it didn't exist
 in the first place.

 {{{
 54                              $this->name     = 'feed_' . $filename;
 55                              $this->mod_name = 'feed_mod_' . $filename;
         54                      $this->name     = 'feed_' . md5(
 "$filename:$extension" );
         55                      $this->mod_name = 'feed_mod_' . md5(
 "$filename:$extension" );
 }}}

 >
 > if you want to adapt your code to the patch, here are some hints :
 > * simplepie manage two kind of extensions : 'spc' and 'spi' for
 respectively 'Feed cache type' and 'Image cache type' (see wp-
 includes\SimplePie\Cache\Base.php)
 > * here is what your code should be when patch will apply
 >
 > {{{#!php
 > $transient = md5(
 'https://wordpress.org/news/category/development/feed/:spc' );
 > delete_transient( "feed_{$transient}" );
 > delete_transient( "feed_mod_{$transient}" );
 > }}}

 The point is I shouldn't be required to make a change. I have followed
 what is in core and your patch causes a breaking change. A change that is
 not necessary and not relevant to the goals of your PR.

 I'm still not clear on what you perceive the bug to be. Could you provide
 a better description.

 There is no value in removing a filter that currently exists. Simply
 because it exists in more than one location is not justification for
 removal.

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


More information about the wp-trac mailing list