uuidd: ensure pid file is wrote when it is requested

Earlier for example this 'uuidd --pid /dev/full' worked, now error is
printed about truncating not being possible for character device and
assuming someone would write pid to full disk it should not be go by
unnoticed.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
Sami Kerola 2014-05-24 17:38:49 +01:00
parent 574528ed40
commit caac206429
1 changed files with 4 additions and 2 deletions

View File

@ -338,10 +338,12 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
if (pidfile_path) {
sprintf(reply_buf, "%8d\n", getpid());
ignore_result( ftruncate(fd_pidfile, 0) );
if (ftruncate(fd_pidfile, 0))
err(EXIT_FAILURE, _("could not truncate file: %s"), pidfile_path);
write_all(fd_pidfile, reply_buf, strlen(reply_buf));
if (fd_pidfile > 1)
close(fd_pidfile); /* Unlock the pid file */
if (close_fd(fd_pidfile) != 0) /* Unlock the pid file */
err(EXIT_FAILURE, _("write failed: %s"), pidfile_path);
}
}