1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

Fix syntax error detection in associative array assignments

Reproducer:

$ fn=([foo_key]=foo_val [bar_key])
-ksh: [bar_key]: not found

Expected output:
-ksh: syntax error: `[bar_key]' unexpected

As soon as one correct associative array assignment element has
been processed, a subsequent one, starting with '[' but not
containing ']=', is incorrectly seen as a command to execute.
If a command '[bar_key]' existed on $PATH, it would have been run.

src/cmd/ksh93/sh/parse.c: simple():
- In the syntax check for associative array assignments, don't just
  check for an initial '[' but also verify the presence of ']='.

Thanks to @JohnoKing for finding this bug.

Resolves: https://github.com/ksh93/ksh/issues/427
This commit is contained in:
Martijn Dekker 2022-07-05 22:09:29 +02:00
parent 06e56251b9
commit fbfd4d3ab8
3 changed files with 15 additions and 1 deletions

3
NEWS
View file

@ -9,6 +9,9 @@ Any uppercase BUG_* names are modernish shell bug IDs.
following a redirection without being an argument to a redirection.
For example, this now writes 'OK' to standard error: cat >&2 <(echo OK)
- Fixed the detection of a syntax error in compound assignments to
associative arays.
2022-07-02:
- Fixed a bug where, if the last command in a subshell was an external