From 23657a4bec8b931b7534a102cc487fc075cc00cd Mon Sep 17 00:00:00 2001 From: Eyal Itkin Date: Sun, 24 Nov 2024 12:57:48 +0200 Subject: 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 --- mesonbuild/rewriter.py | 19 ++++++++++++------- 1 file 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 -- cgit v1.2.3