aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-02-14 18:54:12 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-02-14 18:54:12 +0200
commitbbe4656c51012bd13da44c00ec6c5af6caa93351 (patch)
treea9061c5e2473e5c6de118d07bea53fefafded2e4
parent819da091c260cc85757d5b90c6e906a2f33dde1f (diff)
downloadmeson-bbe4656c51012bd13da44c00ec6c5af6caa93351.zip
meson-bbe4656c51012bd13da44c00ec6c5af6caa93351.tar.gz
meson-bbe4656c51012bd13da44c00ec6c5af6caa93351.tar.bz2
Guard against subdir segments in output files.
-rw-r--r--mesonbuild/interpreter.py2
-rw-r--r--test cases/failing/27 output subdir/foo.in1
-rw-r--r--test cases/failing/27 output subdir/meson.build5
-rw-r--r--test cases/failing/27 output subdir/subdir/dummy.txt2
4 files changed, 10 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 238c96c..a633917 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1816,6 +1816,8 @@ class Interpreter():
raise InterpreterException('Input must be a string.')
if not isinstance(output, str):
raise InterpreterException('Output must be a string.')
+ if os.path.split(output)[0] != '':
+ raise InterpreterException('Output file name must not contain a subdirectory.')
if 'configuration' in kwargs:
conf = kwargs['configuration']
if not isinstance(conf, ConfigurationDataHolder):
diff --git a/test cases/failing/27 output subdir/foo.in b/test cases/failing/27 output subdir/foo.in
new file mode 100644
index 0000000..3d1bf19
--- /dev/null
+++ b/test cases/failing/27 output subdir/foo.in
@@ -0,0 +1 @@
+Nothing here.
diff --git a/test cases/failing/27 output subdir/meson.build b/test cases/failing/27 output subdir/meson.build
new file mode 100644
index 0000000..282d0b7
--- /dev/null
+++ b/test cases/failing/27 output subdir/meson.build
@@ -0,0 +1,5 @@
+project('outdir path', 'c')
+
+configure_file(input : 'foo.in',
+ output : 'subdir/foo',
+ configuration : configuration_data())
diff --git a/test cases/failing/27 output subdir/subdir/dummy.txt b/test cases/failing/27 output subdir/subdir/dummy.txt
new file mode 100644
index 0000000..f10acf3
--- /dev/null
+++ b/test cases/failing/27 output subdir/subdir/dummy.txt
@@ -0,0 +1,2 @@
+I'm only here because Git is stupid about empty dirs.
+