From b0c868c0148162beacf5f42eb24a42d62abbc1f1 Mon Sep 17 00:00:00 2001
From: fiasco <fiasco@188162.no-reply.drupal.org>
Date: Wed, 30 Dec 2015 20:09:04 +0100
Subject: [PATCH] Issue #2309471 by Josh Waihi: File Fetcher doesn't obey
 allowed extensions

---
 plugins/FeedsFileFetcher.inc | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/plugins/FeedsFileFetcher.inc b/plugins/FeedsFileFetcher.inc
index 6f1b3107..a3b415c9 100644
--- a/plugins/FeedsFileFetcher.inc
+++ b/plugins/FeedsFileFetcher.inc
@@ -79,15 +79,15 @@ class FeedsFileFetcher extends FeedsFetcher {
    *   no files could be found. Never contains directories.
    */
   protected function listFiles($dir) {
-    $dir = file_stream_wrapper_uri_normalize($dir);
+    // Seperate out string into array of extensions. Make sure its regex safe.
+    $config = $this->getConfig();
+    $extensions = array_filter(array_map('preg_quote', explode(' ', $config['allowed_extensions'])));
+    $regex = '/\.(' . implode('|', $extensions) . ')$/';
     $files = array();
-    if ($items = @scandir($dir)) {
-      foreach ($items as $item) {
-        if (is_file("$dir/$item") && strpos($item, '.') !== 0) {
-          $files[] = "$dir/$item";
-        }
-      }
+    foreach (file_scan_directory($dir, $regex) as $file) {
+      $files[] = $file->uri;
     }
+
     return $files;
   }
 
-- 
GitLab