aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-09-29 21:33:31 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2017-10-01 01:22:05 +0300
commit1b442d11b416b736323d2e5c79d1fca897eaba6f (patch)
tree31682854e4653e5d94b3c7c393837b5a412d0baa
parent7d49d1d2d77223a4f403cf0c723aa10ac15e8c59 (diff)
downloadmeson-1b442d11b416b736323d2e5c79d1fca897eaba6f.zip
meson-1b442d11b416b736323d2e5c79d1fca897eaba6f.tar.gz
meson-1b442d11b416b736323d2e5c79d1fca897eaba6f.tar.bz2
Prevent projects from grabbing other projects' options.
-rw-r--r--mesonbuild/interpreter.py3
-rw-r--r--test cases/failing/61 getoption prefix/meson.build5
-rw-r--r--test cases/failing/61 getoption prefix/subprojects/abc/meson.build1
-rw-r--r--test cases/failing/61 getoption prefix/subprojects/abc/meson_options.txt1
4 files changed, 10 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 8197b5e..7641514 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1700,6 +1700,9 @@ class Interpreter(InterpreterBase):
if len(args) != 1:
raise InterpreterException('Argument required for get_option.')
optname = args[0]
+ if ':' in optname:
+ raise InterpreterException('''Having a colon in option name is forbidden, projects are not allowed
+to directly access options of other subprojects.''')
try:
return self.environment.get_coredata().base_options[optname].value
except KeyError:
diff --git a/test cases/failing/61 getoption prefix/meson.build b/test cases/failing/61 getoption prefix/meson.build
new file mode 100644
index 0000000..8f85cff
--- /dev/null
+++ b/test cases/failing/61 getoption prefix/meson.build
@@ -0,0 +1,5 @@
+project('getopt prefix')
+
+subproject('abc')
+
+get_option('abc:foo')
diff --git a/test cases/failing/61 getoption prefix/subprojects/abc/meson.build b/test cases/failing/61 getoption prefix/subprojects/abc/meson.build
new file mode 100644
index 0000000..aa9c3df
--- /dev/null
+++ b/test cases/failing/61 getoption prefix/subprojects/abc/meson.build
@@ -0,0 +1 @@
+project('abc', 'c')
diff --git a/test cases/failing/61 getoption prefix/subprojects/abc/meson_options.txt b/test cases/failing/61 getoption prefix/subprojects/abc/meson_options.txt
new file mode 100644
index 0000000..89e624e
--- /dev/null
+++ b/test cases/failing/61 getoption prefix/subprojects/abc/meson_options.txt
@@ -0,0 +1 @@
+option('foo', type : 'boolean')