grub/grub-core
Patrick Steinhardt e75cf4a58b unix exec: avoid atexit handlers when child exits
The `grub_util_exec_redirect_all` helper function can be used to
spawn an executable and redirect its output to some files. After calling
`fork()`, the parent will wait for the child to terminate with
`waitpid()` while the child prepares its file descriptors, environment
and finally calls `execvp()`. If something in the children's setup
fails, it will stop by calling `exit(127)`.

Calling `exit()` will cause any function registered via `atexit()` to be
executed, which is usually the wrong thing to do in a child. And
actually, one can easily observe faulty behaviour on musl-based systems
without modprobe(8) installed: executing `grub-install --help` will call
`grub_util_exec_redirect_all` with "modprobe", which obviously fails if
modprobe(8) is not installed. Due to the child now exiting and invoking
the `atexit()` handlers, it will clean up some data structures of the
parent and cause it to be deadlocked in the `waitpid()` syscall.

The issue can easily be fixed by calling `_exit(127)` instead, which is
especially designed to be called when the atexit-handlers should not be
executed.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
2017-08-30 15:20:13 +02:00
..
boot sparc64: Close cdboot ihandle 2017-05-18 21:58:15 +02:00
bus ehci: Fix compilation on i386 2017-07-09 21:31:19 +02:00
commands core: use GRUB_TERM_ definitions when handling term characters 2017-08-07 19:28:22 +02:00
disk i386, x86_64, ppc: fix switch fallthrough cases with GCC7 2017-04-04 19:23:55 +03:00
efiemu i386, x86_64, ppc: fix switch fallthrough cases with GCC7 2017-04-04 19:23:55 +03:00
font Document intentional fallthroughs. 2015-01-27 17:17:58 +01:00
fs * grub-core/fs/udf.c: Add support for UUID 2017-08-07 17:51:50 +02:00
gdb i386, x86_64, ppc: fix switch fallthrough cases with GCC7 2017-04-04 19:23:55 +03:00
gettext * grub-core/gettext/gettext.c (main_context), (secondary_context): 2013-11-07 01:01:47 +01:00
gfxmenu gfxmenu: fix memory leak 2016-01-12 21:52:50 +03:00
gnulib i386, x86_64, ppc: fix switch fallthrough cases with GCC7 2017-04-04 19:23:55 +03:00
hello * grub-core/commands/gptsync.c: Fix typographic quoting. 2012-03-03 13:05:08 +01:00
hook * grub-core/hook/datehook.c (grub_read_hook_datetime): Small stylistic 2011-11-11 21:03:49 +01:00
io io: add a GRUB_GZ prefix to gzio specific defines 2017-08-07 19:30:26 +02:00
kern efi: change heap allocation type to GRUB_EFI_LOADER_CODE 2017-08-07 19:03:34 +02:00
lib core: use GRUB_TERM_ definitions when handling term characters 2017-08-07 19:28:22 +02:00
loader multiboot fixup 2017-08-14 16:24:05 +02:00
mmap Translate UEFI persistent memory type 2015-12-15 10:25:34 +03:00
net Add Virtual LAN support. 2017-05-03 13:03:50 +02:00
normal core: use GRUB_TERM_ definitions when handling term characters 2017-08-07 19:28:22 +02:00
osdep unix exec: avoid atexit handlers when child exits 2017-08-30 15:20:13 +02:00
partmap disk/ldm, partmap/msdos.c: fix spelling error 2015-08-22 21:22:41 +02:00
parttool * grub-core/net/http.c: Add TRANSLATORS comments. 2012-03-05 16:42:26 +01:00
script yylex: Explicilty cast fprintf to void. 2017-08-14 14:11:43 +02:00
term core: use GRUB_TERM_ definitions when handling term characters 2017-08-07 19:28:22 +02:00
tests core: use GRUB_TERM_ definitions when handling term characters 2017-08-07 19:28:22 +02:00
video coreboot: Split parts that are platform-independent. 2017-05-08 19:10:24 +02:00
gdb_grub.in * grub-core/gdb_grub.in: Fix overflow and wrong field. 2013-10-14 03:40:20 +02:00
genemuinit.sh use MODULE_FILES for genemuinit* instead of MOD_FILES 2014-01-18 23:15:40 +04:00
genemuinitheader.sh use MODULE_FILES for genemuinit* instead of MOD_FILES 2014-01-18 23:15:40 +04:00
genmod.sh.in Fix shebang for termux. 2017-05-03 12:49:31 +02:00
genmoddep.awk enforcing fixup 2017-08-14 16:27:10 +02:00
gensyminfo.sh.in Fix shebang for termux. 2017-05-03 12:49:31 +02:00
gensymlist.sh Make 'make check' work on emu. 2013-04-27 02:00:16 +02:00
gentrigtables.c * grub-core/gentrigtables.c: Make tables const. 2013-03-01 11:15:09 +01:00
gmodule.pl.in * grub-core/gmodule.pl.in: Accept newer binutils which output 2014-09-21 18:23:23 +02:00
gnulib-fix-gcc7-fallthrough.diff Add gnulib-fix-gcc7-fallthrough.diff 2017-04-04 19:37:47 +03:00
gnulib-fix-null-deref.diff Import new gnulib. 2013-04-11 21:12:46 +02:00
gnulib-fix-width.diff Import new gnulib. 2013-04-11 21:12:46 +02:00
gnulib-no-abort.diff Import new gnulib. 2013-04-11 21:12:46 +02:00
gnulib-no-gets.diff Import new gnulib. 2013-04-11 21:12:46 +02:00
Makefile.am arm_coreboot: Support DMA. 2017-05-08 22:06:04 +02:00
Makefile.core.def linux fixup 2017-08-14 16:23:52 +02:00
modinfo.sh.in Fix shebang for termux. 2017-05-03 12:49:31 +02:00