modtools: fix use-after-free of cell pointers in ModWalker
authorXiretza <xiretza@xiretza.xyz>
Mon, 15 Mar 2021 14:55:18 +0000 (15:55 +0100)
committerMarcelina Koƛcielnicka <mwk@0x04.net>
Thu, 18 Mar 2021 12:50:13 +0000 (13:50 +0100)
commit3aa10e90ba1d57e4d01c199396a52fbd1a66fa7e
tree89c3bae745c3f75a2d299cb137abab28ef6df357
parentf4298b057ae0939b83283c8c7431097e71a32b62
modtools: fix use-after-free of cell pointers in ModWalker

cell_inputs and cell_outputs retain cell pointers as their keys across
invocations of setup(), which may however be invalidated in the meantime
(as happens in e.g. passes/opt/share.cc:1432). A later rehash of the
dicts (caused by inserting in ModWalker::add_wire()) will cause them to
be dereferenced.
kernel/modtools.h