aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-02-12 13:11:34 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2017-02-17 15:45:38 -0500
commit5ee92d5bb0c9ad6b6b5bf4b8847d8533dea24c77 (patch)
tree617817c6ac8f72eb7203705acb8740765d55db6c
parent28353e10e19f8516191806be5b7ed7dda0378138 (diff)
downloadmeson-5ee92d5bb0c9ad6b6b5bf4b8847d8533dea24c77.zip
meson-5ee92d5bb0c9ad6b6b5bf4b8847d8533dea24c77.tar.gz
meson-5ee92d5bb0c9ad6b6b5bf4b8847d8533dea24c77.tar.bz2
Prohibit absolute paths in subdir().
-rw-r--r--mesonbuild/interpreter.py2
-rw-r--r--test cases/failing/42 abs subdir/bob/meson.build2
-rw-r--r--test cases/failing/42 abs subdir/meson.build6
3 files changed, 10 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index bcc7977..224f98e 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2132,6 +2132,8 @@ requirements use the version keyword argument instead.''')
raise InvalidArguments('Must not go into subprojects dir with subdir(), use subproject() instead.')
prev_subdir = self.subdir
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:
raise InvalidArguments('Tried to enter directory "%s", which has already been visited.'
% subdir)
diff --git a/test cases/failing/42 abs subdir/bob/meson.build b/test cases/failing/42 abs subdir/bob/meson.build
new file mode 100644
index 0000000..7bbf4b2
--- /dev/null
+++ b/test cases/failing/42 abs subdir/bob/meson.build
@@ -0,0 +1,2 @@
+# This file is never reached.
+x = 3
diff --git a/test cases/failing/42 abs subdir/meson.build b/test cases/failing/42 abs subdir/meson.build
new file mode 100644
index 0000000..8c23224
--- /dev/null
+++ b/test cases/failing/42 abs subdir/meson.build
@@ -0,0 +1,6 @@
+project('abs subdir', 'c')
+
+# For some reason people insist on doing this, probably
+# because Make has taught them to never rely on anything.
+subdir(join_paths(meson.source_root(), 'bob'))
+