diff --git a/security_review.inc b/security_review.inc
index bddee58..bb63cb4 100644
--- a/security_review.inc
+++ b/security_review.inc
@@ -236,7 +236,8 @@ function security_review_check_file_perms() {
     $ignore[] = $private_files;
   }
   drupal_alter('security_review_file_ignore', $ignore);
-  $files = _security_review_check_file_perms_scan('.', $ignore);
+  $parsed = array(realpath('.'));
+  $files = _security_review_check_file_perms_scan('.', $parsed, $ignore);
 
   // Try creating or appending files.
   // Assume it doesn't work.
@@ -264,23 +265,26 @@ function security_review_check_file_perms() {
   return array('result' => $result, 'value' => $files);
 }
 
-function _security_review_check_file_perms_scan($directory, $ignore) {
+function _security_review_check_file_perms_scan($directory, &$parsed, $ignore) {
   $items = array();
   if ($handle = opendir($directory)) {
     while (($file = readdir($handle)) !== FALSE) {
       // Don't check hidden files or ones we said to ignore.
       if ($file[0] != "." && !in_array($file, $ignore)) {
         $file = $directory . "/" . $file;
-        if (is_dir($file) && !in_array($file, $ignore)) {
-          $items = array_merge($items, _security_review_check_file_perms_scan($file, $ignore));
+        if (is_dir($file) && !in_array($file, $ignore) && !in_array(realpath($file), $parsed)) {
+          $parsed[] = realpath($file);
+          $items = array_merge($items, _security_review_check_file_perms_scan($file, $parsed, $ignore));
           if (is_writable($file)) {
             $items[] = preg_replace("/\/\//si", "/", $file);
           }
         }
-        elseif (is_writable($file) && !in_array($file, $ignore)) {
+        elseif (is_writable($file) && !in_array($file, $ignore) && !in_array(realpath($file), $parsed)) {
+          $parsed[] = realpath($file);
           $items[] = preg_replace("/\/\//si", "/", $file);
         }
       }
+
     }
     closedir($handle);
   }
