[PATCH] Don't segfault when uniquifying hidden tied arrays
Philippe Altherr <[email protected]> Sun, 19 Jul 2026 15:17:36 +0200
| Newsgroups | gmane.comp.shells.zsh.devel |
|---|---|
| Message-ID | <CAGdYchsZEkiDqMzwae6B0NhPG+mTGcSk+snEHjSj6iYwM-TC=Q@mail.gmail.com> |
--000000000000b626960656f69d58
Content-Type: multipart/alternative; boundary="000000000000b626950656f69d56"
--000000000000b626950656f69d56
Content-Type: text/plain; charset="UTF-8"
The following code snippet triggers a segmentation fault:
zsh -c 'typeset -T VAR var; () { typeset -i var=1; typeset -g -U VAR }'
zsh: segmentation fault
- Don't segfault when uniquifying hidden tied arrays
<https://github.com/paltherr/zsh/compare/dont-segfault-when-uniquifying-hidden-tied-arrays-start...paltherr:zsh:dont-segfault-when-uniquifying-hidden-tied-arrays>
Philippe
--000000000000b626950656f69d56
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>The following code snippet triggers a segmentation fa=
ult:</div><div><br></div><font face=3D"monospace">zsh -c 'typeset -T VA=
R var; () { typeset -i var=3D1; typeset -g -U VAR }'<br>zsh: segmentati=
on fault<br></font><div><br></div><div>-=C2=A0<a href=3D"https://github.com=
/paltherr/zsh/compare/dont-segfault-when-uniquifying-hidden-tied-arrays-sta=
rt...paltherr:zsh:dont-segfault-when-uniquifying-hidden-tied-arrays">Don=
9;t segfault when uniquifying hidden tied arrays</a></div><div><br></div><d=
iv>Philippe</div><div><br></div></div>
--000000000000b626950656f69d56--
--000000000000b626960656f69d58
Content-Type: text/plain; charset="US-ASCII";
name="dont-segfault-when-uniquifying-hidden-tied-arrays.txt"
Content-Disposition: attachment;
filename="dont-segfault-when-uniquifying-hidden-tied-arrays.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_mrrt8luw0>
X-Attachment-Id: f_mrrt8luw0
ZGlmZiAtLWdpdCBhL1NyYy9idWlsdGluLmMgYi9TcmMvYnVpbHRpbi5jCmluZGV4IDdhMTljMDUx
YS4uODcwYzRhNjNjIDEwMDY0NAotLS0gYS9TcmMvYnVpbHRpbi5jCisrKyBiL1NyYy9idWlsdGlu
LmMKQEAgLTIyNTIsNyArMjI1Miw2IEBAIHR5cGVzZXRfc2luZ2xlKGNoYXIgKmNuYW1lLCBjaGFy
ICpwbmFtZSwgUGFyYW0gcG0sIGludCBmdW5jLAogCSAgICByZXR1cm4gTlVMTDsKIAl9CiAJaWYg
KChvbiAmIFBNX1VOSVFVRSkgJiYgIShwbS0+bm9kZS5mbGFncyAmIFBNX1JFQURPTkxZICYgfm9m
ZikpIHsKLQkgICAgUGFyYW0gYXBtOwogCSAgICBjaGFyICoqeDsKIAkgICAgaWYgKFBNX1RZUEUo
cG0tPm5vZGUuZmxhZ3MpID09IFBNX0FSUkFZKSB7CiAJCXggPSAoKnBtLT5nc3UuYS0+Z2V0Zm4p
KHBtKTsKQEAgLTIyNjMsMTAgKzIyNjIsMTAgQEAgdHlwZXNldF9zaW5nbGUoY2hhciAqY25hbWUs
IGNoYXIgKnBuYW1lLCBQYXJhbSBwbSwgaW50IGZ1bmMsCiAJCSAgICAoKnBtLT5nc3UuYS0+c2V0
Zm4pKHBtLCB4KTsKIAkJfSBlbHNlIGlmIChwbS0+ZW5hbWUgJiYgeCkKIAkJICAgIGFycmZpeGVu
dihOVUxMLCBwbSwgeCk7Ci0JICAgIH0gZWxzZSBpZiAoUE1fVFlQRShwbS0+bm9kZS5mbGFncykg
PT0gUE1fU0NBTEFSICYmIHBtLT5lbmFtZSAmJgotCQkgICAgICAgKGFwbSA9Ci0JCQkoUGFyYW0p
IHBhcmFtdGFiLT5nZXRub2RlKHBhcmFtdGFiLCBwbS0+ZW5hbWUpKSkgewotCQl4ID0gKCphcG0t
PmdzdS5hLT5nZXRmbikoYXBtKTsKKwkgICAgfSBlbHNlIGlmIChQTV9UWVBFKHBtLT5ub2RlLmZs
YWdzKSA9PSBQTV9TQ0FMQVIgJiYgcG0tPmVuYW1lKSB7CisJCXggPSAqKHBtLT5ub2RlLmZsYWdz
ICYgUE1fU1BFQ0lBTAorCQkgICAgICA/IChjaGFyICoqKilwbS0+dS5kYXRhCisJCSAgICAgIDog
KChzdHJ1Y3QgdGllZGRhdGEgKilwbS0+dS5kYXRhKS0+YXJycHRyKTsKIAkJdW5pcWFycmF5KHgp
OwogCQlpZiAoeCkKIAkJICAgIGFycmZpeGVudihwbSwgTlVMTCwgeCk7CmRpZmYgLS1naXQgYS9U
ZXN0L0IwMnR5cGVzZXQuenRzdCBiL1Rlc3QvQjAydHlwZXNldC56dHN0CmluZGV4IDMyZTc5Y2Vk
Mi4uN2ZkOTQ1NDEyIDEwMDY0NAotLS0gYS9UZXN0L0IwMnR5cGVzZXQuenRzdAorKysgYi9UZXN0
L0IwMnR5cGVzZXQuenRzdApAQCAtMzAxLDYgKzMwMSwyMCBAQAogPmxvY2FsIHVuaXF1ZSB0aWVk
IGFycmF5IFNDQUxBUgogPmFycmF5IGxvY2FsIHRpZWQgU0NBTEFSIGFycmF5CiAKKyB0eXBlc2V0
IC1UIFZBUiB2YXI9KGEgYiBjIGIgYSkKKyAoKSB7CisgICB0eXBlc2V0IC1pIHZhcj0xCisgICB0
eXBlc2V0IC1nIC1VIFZBUgorICAgdHlwZXNldCAtcCBWQVIgdmFyCisgfQorIHR5cGVzZXQgLXAg
VkFSIHZhcgorMDpSZWdyZXNzaW9uIHRlc3QgZm9yIG5vdCBzZWdmYXVsdGluZyB3aGVuIHVuaXF1
aWZ5aW5nIGEgaGlkZGVuIHRpZWQgYXJyYXkKK0Y6QlVHOlRoZSBpbm5lciAidHlwZXNldCAtcCBW
QVIiIHNob3VsZCBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgb3V0ZXIgInZhciIKKz50eXBlc2V0
IC1nIC1VVCBWQVIgdmFyPTEKKz50eXBlc2V0IC1pIHZhcj0xCis+dHlwZXNldCAtVVQgVkFSIHZh
cj0oIGEgYiBjICkKKz50eXBlc2V0IC1hVCBWQVIgdmFyPSggYSBiIGMgKQorCiAgdHlwZXNldCAt
VCBTQ0FMQVIgYXJyYXkKICB0eXBlc2V0ICtUIFNDQUxBUgogMTpVbnR5aW5nIGlzIHByb2hpYml0
ZWQK
--000000000000b626960656f69d58--