summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEyal Itkin <eyal.itkin@gmail.com>2024-11-24 12:57:48 +0200
committerJussi Pakkanen <jussi.pakkanen@mailbox.org>2025-11-25 12:14:46 +0200
commit23657a4bec8b931b7534a102cc487fc075cc00cd (patch)
treed61a5eab245eae0effda16d3e6bb09de89c9b34e
parent02bbe3eaa4f667293c72401e634e56e9ffbc33c3 (diff)
downloadmeson-23657a4bec8b931b7534a102cc487fc075cc00cd.tar.gz
Rewriter: Handle unknown write targets
Add error checks for cases in which the write target is unknown and ensure all error cases indeed abort the execution to avoid internal crash. Resolves #13502. Signed-off-by: Eyal Itkin <eyal.itkin@gmail.com>
-rw-r--r--mesonbuild/rewriter.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py
index 4a237bd7b..51846d075 100644
--- a/mesonbuild/rewriter.py
+++ b/mesonbuild/rewriter.py
@@ -539,16 +539,21 @@ class Rewriter:
arg_node = node.args
elif cmd['function'] == 'target':
tmp_tgt = self.find_target(cmd['id'])
- if tmp_tgt:
- node = tmp_tgt.node
- arg_node = node.args
+ if not tmp_tgt:
+ mlog.error('Unable to find the target', mlog.bold(cmd['id']), *self.on_error())
+ return self.handle_error()
+ node = tmp_tgt.node
+ arg_node = node.args
elif cmd['function'] == 'dependency':
tmp_dep = self.find_dependency(cmd['id'])
- if tmp_dep:
- node = tmp_dep.node
- arg_node = node.args
+ if not tmp_dep:
+ mlog.error('Unable to find the dependency', mlog.bold(cmd['id']), *self.on_error())
+ return self.handle_error()
+ node = tmp_dep.node
+ arg_node = node.args
if not node:
- mlog.error('Unable to find the function node')
+ mlog.error('Unable to find the function node', *self.on_error())
+ return self.handle_error()
assert isinstance(node, FunctionNode)
assert isinstance(arg_node, ArgumentNode)
# Transform the key nodes to plain strings