aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/interpreter.py b/interpreter.py
index 5db9717..05e30a1 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1774,14 +1774,16 @@ class Interpreter():
self.validate_extraction(obj.held_object)
return obj.method_call(method_name, args, kwargs)
+ # Only permit object extraction from the same subproject
def validate_extraction(self, buildtarget):
- if self.subproject_dir == '':
+ if not self.subdir.startswith(self.subproject_dir):
if buildtarget.subdir.startswith(self.subproject_dir):
raise InterpreterException('Tried to extract objects from a subproject target.')
else:
- lead = '/'.join(self.subdir.split('/')[0:2])
if not buildtarget.subdir.startswith(lead):
- raise InterpreterException('Tried to extract objects from a different subproject target.')
+ raise InterpreterException('Tried to extract objects from the main project from a subproject.')
+ if self.subdir.split('/')[1] != buildtarget.subdir.split('/')[1]:
+ raise InterpreterException('Tried to extract objects from a different subproject.')
def array_method_call(self, obj, method_name, args):
if method_name == 'contains':