From 8c24d75f610f85397273c5332657ba77e85b4323 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Tue, 17 May 2016 17:00:47 +0200 Subject: [PATCH] initd: fix descriptor leak Close the descriptor to /tmp/.preinit returned by creat() in order to avoid an fd leak in the init process. Signed-off-by: Jo-Philipp Wich --- initd/preinit.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/initd/preinit.c b/initd/preinit.c index 51fde31..729978e 100644 --- a/initd/preinit.c +++ b/initd/preinit.c @@ -89,6 +89,7 @@ preinit(void) { char *init[] = { "/bin/sh", "/etc/preinit", NULL }; char *plug[] = { "/sbin/procd", "-h", "/etc/hotplug-preinit.json", NULL }; + int fd; LOG("- preinit -\n"); @@ -106,7 +107,13 @@ preinit(void) uloop_process_add(&plugd_proc); setenv("PREINIT", "1", 1); - creat("/tmp/.preinit", 0600); + + fd = creat("/tmp/.preinit", 0600); + + if (fd < 0) + ERROR("Failed to create sentinel file\n"); + else + close(fd); preinit_proc.cb = spawn_procd; preinit_proc.pid = fork(); -- 2.11.0