diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2019-08-28 06:32:13 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2019-08-28 06:32:13 -0700 |
commit | 565ef4bbe9e5c69cc482b93d484f2c587e76887d (patch) | |
tree | e4b1a02ec9ea609df52b51688c42005bc34877e2 /share | |
parent | 393f9629e6575aa3a48a9e21bfb48b75490cb5e9 (diff) | |
download | txr-565ef4bbe9e5c69cc482b93d484f2c587e76887d.tar.gz txr-565ef4bbe9e5c69cc482b93d484f2c587e76887d.tar.bz2 txr-565ef4bbe9e5c69cc482b93d484f2c587e76887d.zip |
unwind: bugfix: unhandled_ex not gc-protected.
Exception info stashed into the unhandled_ex global
pseudo-frame is not protected from gc reclamation. This
allows for use-after-free errors, that can reproduce if
unwind-protect cleanup forms that go off during the processing
of an unhandled exception trigger gc. The code which deals
with unhandled exception, like error_trace, then works with
exception arguments that are now objects on the free list.
* unwind.c (uw_init): GC-protect the exception sym and
arguments stored in unhandled_ex.
Diffstat (limited to 'share')
0 files changed, 0 insertions, 0 deletions