diff options
author | Andrew Dolgov <[email protected]> | 2018-12-14 14:55:36 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2018-12-14 14:55:36 +0300 |
commit | 958fbfedb61631228d49ad8b3e6e36aa8f21c6b1 (patch) | |
tree | c34ff77d389af846a33138bb3a3f045e169ffde4 | |
parent | de9ff1644f40e4da80f4e0c7e359286fcccc45ac (diff) |
rssutils: check if returned data is in gzip format before trying to decode it
-rwxr-xr-x | classes/rssutils.php | 22 |
1 files 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); + + Debug::log("is_gzipped: $is_gzipped", Debug::$LOG_VERBOSE); - if ($tmp) $feed_data = $tmp; + 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; + } } |