From 958fbfedb61631228d49ad8b3e6e36aa8f21c6b1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 14 Dec 2018 14:55:36 +0300 Subject: [PATCH] rssutils: check if returned data is in gzip format before trying to decode it --- classes/rssutils.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/classes/rssutils.php b/classes/rssutils.php index 750222c80..ea57e6466 100755 --- a/classes/rssutils.php +++ b/classes/rssutils.php @@ -259,9 +259,13 @@ class RSSUtils { global $fetch_curl_used; if (!$fetch_curl_used) { - $tmp = @gzdecode($feed_data); + $is_gzipped = RSSUtils::is_gzipped($feed_data); - if ($tmp) $feed_data = $tmp; + if ($is_gzipped) { + $tmp = @gzdecode($feed_data); + + if ($tmp) $feed_data = $tmp; + } } $feed_data = trim($feed_data); @@ -433,9 +437,15 @@ class RSSUtils { global $fetch_curl_used; if (!$fetch_curl_used) { - $tmp = @gzdecode($feed_data); + $is_gzipped = RSSUtils::is_gzipped($feed_data); - if ($tmp) $feed_data = $tmp; + Debug::log("is_gzipped: $is_gzipped", Debug::$LOG_VERBOSE); + + if ($is_gzipped) { + $tmp = @gzdecode($feed_data); + + if ($tmp) $feed_data = $tmp; + } } $feed_data = trim($feed_data); @@ -1602,6 +1612,8 @@ class RSSUtils { } } - + private static function is_gzipped($feed_data) { + return mb_strpos($feed_data, "\x1f" . "\x8b" . "\x08", 0, "US-ASCII") === 0; + } }