From 04a69a18254e32073e4904ff77254dea9866bc7a Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Fri, 5 Mar 2010 11:52:32 +0100 Subject: [PATCH] ListVisibleFiles: require normalized path names This patch changes ListVisibleFiles to raise ProgrammerError if it's passed a non-absolute/non-normalized path name, and adds unittests for this behaviour. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/utils.py | 4 ++++ test/ganeti.utils_unittest.py | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/lib/utils.py b/lib/utils.py index efd736ad0..52b799fe5 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 550bf2503..aad16c101 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""" -- GitLab