diff options
| author | Mikael Magnusson <mikachu@gmail.com> | 2026-05-27 18:43:44 +0200 |
|---|---|---|
| committer | Mikael Magnusson <mikachu@gmail.com> | 2026-06-04 05:46:11 +0200 |
| commit | bba0ec5f2fbee208e17496218b560341a2ac2aec (patch) | |
| tree | 767cc04779e6afd7535754d9635eb3b3b449217f /Src | |
| parent | 54620: fix check for when to hash commands (diff) | |
| download | zsh-bba0ec5f2fbee208e17496218b560341a2ac2aec.tar zsh-bba0ec5f2fbee208e17496218b560341a2ac2aec.tar.gz zsh-bba0ec5f2fbee208e17496218b560341a2ac2aec.tar.bz2 zsh-bba0ec5f2fbee208e17496218b560341a2ac2aec.tar.lz zsh-bba0ec5f2fbee208e17496218b560341a2ac2aec.tar.xz zsh-bba0ec5f2fbee208e17496218b560341a2ac2aec.tar.zst zsh-bba0ec5f2fbee208e17496218b560341a2ac2aec.zip | |
54624: parse_class would underallocate if posix character classes are used
Diffstat (limited to 'Src')
| -rw-r--r-- | Src/Zle/complete.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c index 5152764b8..4bc048776 100644 --- a/Src/Zle/complete.c +++ b/Src/Zle/complete.c @@ -496,9 +496,16 @@ parse_class(Cpattern p, char *iptr) } /* find end of class. End character can appear literally first. */ - for (optr = iptr; optr == iptr || *optr != endchar; optr++) + for (optr = iptr; optr == iptr || *optr != endchar; optr++) { if (!*optr) return optr; + /* skip POSIX class names like [:alpha:] */ + if (endchar == ']' && *optr == '[' && optr[1] == ':') { + char *nptr = strchr(optr+2, ':'); + if (nptr && nptr[1] == ']') + optr = nptr + 1; + } + } /* * We can always fit the parsed class within the same length * because of the tokenization (including a null byte). |
