git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [cgit PATCH] Close file descriptor on error in readfile()

From
LHLars Hjemli <hjemli@gmail.com>
Date
Nov 7, 2009, 14:59 UTC
Message-ID
<8c5c35580911070659h35c44421q713ddba97318e2b8@mail.gmail.com>
In-Reply-To
<4AF566C9.5090106@pixeltards.com>
On Sat, Nov 7, 2009 at 13:23, Rys Sommefeldt <rys@pixeltards.com> wrote:
> 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:
Thanks. I've applied the following to my stable branch:
diff --git a/shared.c b/shared.c
index d7b2d5a..a27ab30 100644
--- a/shared.c
+++ b/shared.c
@@ -406,12 +406,17 @@ 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))
+       }
+       if (!S_ISREG(st.st_mode)) {
+               close(fd);
                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);
 }

--
larsh
Previous: Rys SommefeldtNext: Andreas Schwab
Message 5 of 7 in “Close file descriptor on error in readfile()”
  1. Close file descriptor on error in readfile()Rys Sommefeldt, Nov 7, 2009
  2. Steven NoonanNov 7, 2009
  3. Rys SommefeldtNov 7, 2009
  4. Rys SommefeldtNov 7, 2009
  5. Lars HjemliNov 7, 2009
  6. Andreas SchwabNov 7, 2009
  7. Lars HjemliNov 7, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.