Fix the SIGHUP signal race. ed's "event loop" operates a getchar(); check
authorderaadt <deraadt@openbsd.org>
Tue, 16 Jul 2024 05:01:10 +0000 (05:01 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 16 Jul 2024 05:01:10 +0000 (05:01 +0000)
commit2bde29b351c80904b1c32bd5386a056013b27f45
tree8374e5c5a0ce36a37acd95323d55180a81f88771
parentb9a034e30699409d88a44ac8fb6a1f7b58dd3993
Fix the SIGHUP signal race.  ed's "event loop" operates a getchar(); check
the hup flag before and after that call, when the buffer structures are stable
for write_file() to work.  Remove the hup handling from the SPL0() macro,
because this is run in at least one place during structure instability.
The SIGINT handler, which uses siglongjmp(), is also trusting the SPL1/SPL0
dance more than it should.
ok millert
bin/ed/ed.h
bin/ed/io.c
bin/ed/main.c