aboutsummaryrefslogtreecommitdiff
path: root/lib/SimplePie/SimplePie.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/SimplePie/SimplePie.php')
-rw-r--r--lib/SimplePie/SimplePie.php24
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/SimplePie/SimplePie.php b/lib/SimplePie/SimplePie.php
index bddf67645..c5a036c2d 100644
--- a/lib/SimplePie/SimplePie.php
+++ b/lib/SimplePie/SimplePie.php
@@ -1322,12 +1322,24 @@ class SimplePie
function cleanMd5($rss)
{
- return md5(preg_replace(array(
- '#<(lastBuildDate|pubDate|updated|feedDate|dc:date|slash:comments)>[^<]+</\\1>#',
- '#<(media:starRating|media:statistics) [^/<>]+/>#',
- '#<!--.+?-->#s',
- ), '', $rss));
-
+ //Process by chunks not to use too much memory
+ if (($stream = fopen('php://temp', 'r+')) &&
+ fwrite($stream, $rss) &&
+ rewind($stream))
+ {
+ $ctx = hash_init('md5');
+ while ($stream_data = fread($stream, 1048576))
+ {
+ hash_update($ctx, preg_replace([
+ '#<(lastBuildDate|pubDate|updated|feedDate|dc:date|slash:comments)>[^<]+</\\1>#',
+ '#<(media:starRating|media:statistics) [^/<>]+/>#',
+ '#<!--.+?-->#s',
+ ], '', $stream_data));
+ }
+ fclose($stream);
+ return hash_final($ctx);
+ }
+ return '';
}
/**