diff --git a/lib/utils.py b/lib/utils.py
index efd736ad0bdc7ab99fe04822e34321bf174a6b7a..52b799fe5387e974a1a5d4da6657d6ff286772f2 100644
--- a/lib/utils.py
+++ b/lib/utils.py
@@ -1221,8 +1221,12 @@ def ListVisibleFiles(path):
   @param path: the directory to enumerate
   @rtype: list
   @return: the list of all files not starting with a dot
+  @raise ProgrammerError: if L{path} is not an absolue and normalized path
 
   """
+  if not IsNormAbsPath(path):
+    raise errors.ProgrammerError("Path passed to ListVisibleFiles is not"
+                                 " absolute/normalized: '%s'" % path)
   files = [i for i in os.listdir(path) if not i.startswith(".")]
   files.sort()
   return files
diff --git a/test/ganeti.utils_unittest.py b/test/ganeti.utils_unittest.py
index 550bf25034ea68885d0cb9c543c5f7ee93e8062a..aad16c101df4b556a8c0a9c19ee35dab862e09dd 100755
--- a/test/ganeti.utils_unittest.py
+++ b/test/ganeti.utils_unittest.py
@@ -897,6 +897,13 @@ class TestListVisibleFiles(unittest.TestCase):
     expected = ["a", "b"]
     self._test(files, expected)
 
+  def testNonAbsolutePath(self):
+    self.failUnlessRaises(errors.ProgrammerError, ListVisibleFiles, "abc")
+
+  def testNonNormalizedPath(self):
+    self.failUnlessRaises(errors.ProgrammerError, ListVisibleFiles,
+                          "/bin/../tmp")
+
 
 class TestNewUUID(unittest.TestCase):
   """Test case for NewUUID"""