aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-05-07 00:35:38 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2017-05-08 20:58:10 +0300
commit87666d105a2d172ebb46d96969be68a0e5aae490 (patch)
treeaa1da35603da8003db5087bc43c0323bd29bc1b2
parent63c4c54a64fb8da685c6569f4cea82ee9718e4bc (diff)
downloadmeson-87666d105a2d172ebb46d96969be68a0e5aae490.zip
meson-87666d105a2d172ebb46d96969be68a0e5aae490.tar.gz
meson-87666d105a2d172ebb46d96969be68a0e5aae490.tar.bz2
Prevent going into the same directory twice via symlinks. Closes #1749.
-rw-r--r--mesonbuild/interpreter.py6
1 files changed, 4 insertions, 2 deletions
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)