From 4bb4358d6d04823ea9c6a807ce98406c7a8fa1c8 Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Thu, 17 Feb 2022 13:59:04 +0100 Subject: [PATCH] marsadm: warn on bad macro variables --- userspace/marsadm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/userspace/marsadm b/userspace/marsadm index bc19ba74..cc2db854 100755 --- a/userspace/marsadm +++ b/userspace/marsadm @@ -7402,7 +7402,14 @@ sub eval_fn { # prefix *crement operators if ($arg1 =~ m/^([-+]{2})$/) { my $op = $arg1; - $varname = parse_macro(shift, $env); + my $arg1 = shift; + $varname = parse_macro($arg1, $env); + if (!defined($varname)) { + lwarn "macro processor: prefix operator '$op': varname '$arg1' sub-expansion yields 'undef'\n"; + $varname = ""; + } elsif ($varname eq "") { + lwarn "macro processor: prefix operator '$op': varname sub-expanded from argument '$arg1' is empty\n"; + } if ($op =~ m/^\+/) { $$env{$varname}++; } else { @@ -7410,6 +7417,12 @@ sub eval_fn { } } else { $varname = parse_macro($arg1, $env); + if (!defined($varname)) { + lwarn "macro processor: varname argument '$arg1' sub-expansion yields 'undef'\n"; + $varname = ""; + } elsif ($varname eq "") { + lwarn "macro processor: varname sub-expanded from argument '$arg1' is empty\n"; + } } my $result = ""; if (defined($$env{$varname})) { @@ -7433,6 +7446,9 @@ sub eval_fn { $index = scalar(@list) - 1 if ($index eq "" || $index eq "*"); $result = $list[$index]; } + if (!defined($result)) { + lwarn "macro processor: expansion of variable '$varname' yields 'undef'\n"; + } return $result; } if (/^let$/) { # assignment