Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: crash with nameref and local argv
- X-seq: zsh-workers 54029
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: Oliver Kiddle <opk@xxxxxxx>
- Cc: Mikael Magnusson <mikachu@xxxxxxxxx>, zsh workers <zsh-workers@xxxxxxx>
- Subject: Re: crash with nameref and local argv
- Date: Tue, 4 Nov 2025 13:04:54 -0800
- Archived-at: <https://zsh.org/workers/54029>
- In-reply-to: <4143-1762289686.575274@LOsr.E3jP.C0e7>
- List-id: <zsh-workers.zsh.org>
- References: <CAHYJk3Qe7XuGv_B8nFUdHLD4C_kSgaJkS5acAFWTJ2Db_GWoUQ@mail.gmail.com> <CAHYJk3RW-a5_sG4sc4pN-X3=Q1AQ2rZbBsKidWXEBzJps8piZw@mail.gmail.com> <CAH+w=7YuE2GzH1F9r9Q6WmJxk1puj1M1qmSLsQ76pJ2r+49r4g@mail.gmail.com> <CAH+w=7YWh4nS__qzBEb3i9_OYfTkYfqLYSigEp+Obyp6_K+nDg@mail.gmail.com> <4143-1762289686.575274@LOsr.E3jP.C0e7>
On Tue, Nov 4, 2025 at 12:54 PM Oliver Kiddle <opk@xxxxxxx> wrote:
>
> Still crashes with typeset -nu 'foo=argv[1]'
Indeed. This instead.
diff --git a/Src/params.c b/Src/params.c
index 5a0434e40..407d557d7 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -3239,7 +3239,8 @@ assignsparam(char *s, char *val, int flags)
return NULL;
}
if (*val && (v->pm->node.flags & PM_NAMEREF)) {
- if (!valid_refname(val)) {
+ if (!valid_refname(val) ||
+ ((v->pm->node.flags & PM_UPPER) && !strncmp(val, "argv", 4))) {
zerr("invalid variable name: %s", val);
zsfree(val);
unqueue_signals();
Messages sorted by:
Reverse Date,
Date,
Thread,
Author