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

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

From
Andreas Schwab <schwab@linux-m68k.org>
Date
Nov 7, 2009, 16:14 UTC
Message-ID
<m2ocneb9cc.fsf@igel.home>
In-Reply-To
<8c5c35580911070659h35c44421q713ddba97318e2b8@mail.gmail.com>
Lars Hjemli <hjemli@gmail.com> writes:
Show 12 quoted lines
> 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;
The close call can clobber errno.
Show 11 quoted lines
> -       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);
Likewise.
Andreas.
-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
Previous: Lars HjemliNext: Lars Hjemli
Message 6 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.