From 87666d105a2d172ebb46d96969be68a0e5aae490 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sun, 7 May 2017 00:35:38 +0300 Subject: Prevent going into the same directory twice via symlinks. Closes #1749. --- mesonbuild/interpreter.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'mesonbuild/interpreter.py') diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 0e3f039..7eb1f26 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2217,10 +2217,12 @@ class Interpreter(InterpreterBase): subdir = os.path.join(prev_subdir, args[0]) if os.path.isabs(subdir): raise InvalidArguments('Subdir argument must be a relative path.') - if subdir in self.visited_subdirs: + absdir = os.path.join(self.environment.get_source_dir(), subdir) + symlinkless_dir = os.path.realpath(absdir) + if symlinkless_dir in self.visited_subdirs: raise InvalidArguments('Tried to enter directory "%s", which has already been visited.' % subdir) - self.visited_subdirs[subdir] = True + self.visited_subdirs[symlinkless_dir] = True self.subdir = subdir os.makedirs(os.path.join(self.environment.build_dir, subdir), exist_ok=True) buildfilename = os.path.join(self.subdir, environment.build_filename) -- cgit v1.1