summaryrefslogtreecommitdiffstats
path: root/lib/libutil
diff options
context:
space:
mode:
authormillert <millert@openbsd.org>2013-10-01 16:47:42 +0000
committermillert <millert@openbsd.org>2013-10-01 16:47:42 +0000
commit52d6904d9299b614d6085cf78834e3ccd155d9c4 (patch)
tree56474b9f7b0406d12258ec069fafcdc7d3ed9b05 /lib/libutil
parentin truth, noone uses these backwards compat stubs to compile make on other (diff)
downloadwireguard-openbsd-52d6904d9299b614d6085cf78834e3ccd155d9c4.tar.xz
wireguard-openbsd-52d6904d9299b614d6085cf78834e3ccd155d9c4.zip
Fix FILE * leak in error path if fprintf fails. Found by and OK gilles@
Diffstat (limited to 'lib/libutil')
-rw-r--r--lib/libutil/pidfile.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/libutil/pidfile.c b/lib/libutil/pidfile.c
index 3625be34139..15f7c3a3ce2 100644
--- a/lib/libutil/pidfile.c
+++ b/lib/libutil/pidfile.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pidfile.c,v 1.8 2008/06/26 05:42:05 ray Exp $ */
+/* $OpenBSD: pidfile.c,v 1.9 2013/10/01 16:47:42 millert Exp $ */
/* $NetBSD: pidfile.c,v 1.4 2001/02/19 22:43:42 cgd Exp $ */
/*-
@@ -74,14 +74,16 @@ pidfile(const char *basename)
}
pid = getpid();
- if (fprintf(f, "%ld\n", (long)pid) <= 0 || fclose(f) != 0) {
+ if (fprintf(f, "%ld\n", (long)pid) <= 0 || fflush(f) != 0) {
save_errno = errno;
+ (void) fclose(f);
(void) unlink(pidfile_path);
free(pidfile_path);
pidfile_path = NULL;
errno = save_errno;
return (-1);
}
+ (void) fclose(f);
pidfile_pid = pid;
if (atexit(pidfile_cleanup) < 0) {