Re: [cgit PATCH] Close file descriptor on error in readfile()
- From
Rys Sommefeldt <rys@pixeltards.com>
- Date
- Nov 7, 2009, 12:23 UTC
- Message-ID
- <4AF566C9.5090106@pixeltards.com>
- In-Reply-To
- <4AF4D4EC.1040806@pixeltards.com>
All,
Sorry for the earlier HTML email, I'd misconfigured my mail client so accept my apologies for that (and thanks Steven). Here's the reworked patch:
From d928507bf4c8727c3848525f4744d7c8507de5e8 Mon Sep 17 00:00:00 2001 From: Rys Sommefeldt <rys@pixeltards.com> Date: Sat, 7 Nov 2009 12:15:24 +0000 Subject: [PATCH] Close fd on error in readfile()
--- shared.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/shared.c b/shared.c index d7b2d5a..a676fa3 100644 --- a/shared.c +++ b/shared.c @@ -406,12 +406,15 @@ int readfile(const char *path, char **buf, size_t *size) fd = open(path, O_RDONLY); if (fd == -1) return errno; - if (fstat(fd, &st)) + if (fstat(fd, &st)) { + close(fd); return errno; + } if (!S_ISREG(st.st_mode)) return EISDIR; *buf = xmalloc(st.st_size + 1); *size = read_in_full(fd, *buf, st.st_size); (*buf)[*size] = '\0'; + close(fd); return (*size == st.st_size ? 0 : errno); }
-- 1.6.5.2