Close correct file descriptor.
authorflorian <florian@openbsd.org>
Mon, 16 Sep 2024 07:34:49 +0000 (07:34 +0000)
committerflorian <florian@openbsd.org>
Mon, 16 Sep 2024 07:34:49 +0000 (07:34 +0000)
commit1a83499475293943c4a4877f95fbd236a5ff897f
treee2337b8fbd511c8d0b606ae3c0cccb2910fd065b
parent91055178be64b0c25c43e9995157e10e35c3b1bc
Close correct file descriptor.

Instead of closing the just received UDP socket we closed the imsg fd
thus cleanly shutting down dhcpleased(8).

Problem triggered by sf@ with something like
while :; do ifconfig vio0 -inet; done
while :; do ifconfig vio0 inet autoconf; done

The problem triggers when dhcpleased configured a lease and in just
the right moment the autoconf flag gets removed. The main process
opens a udp socket and sends it to the frontend. At the same time the
frontend learned (from the route socket), that the interface lost its
autoconf flag. When the frontend then receives the udp socket via fd
passing it tries to close it. Due to a typo it would instead close the
imsg file descriptor.

Found by me after lots of head scratching.
OK tb
sbin/dhcpleased/frontend.c