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

[PATCH] opening files in remote.c should ensure it is opening a file

From
H.Merijn Brand <h.m.brand@xs4all.nl>
Date
Feb 8, 2008, 16:46 UTC
Message-ID
<20080208174654.2e9e679c@pc09.procura.nl>

HP-UX allows directories to be opened with fopen (path, "r"), which will cause some translations that expect to read files, read dirs instead. This patch makes sure the two fopen () calls in remote.c only open the file if it is a file.

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
---

diff -pur git-1.5.4a/remote.c git-1.5.4b/remote.c --- git-1.5.4a/remote.c 2008-01-27 09:04:18 +0100 +++ git-1.5.4/remote.c 2008-02-08 17:38:43 +0100

@@ -121,9 +121,18 @@ static struct branch *make_branch(const
        return branches[empty];
 }

+/* Helper function to ensure that we are opening a file and not a directory */
+static FILE *open_file(char *full_path)
+{
+       struct stat st_buf;
+       if (stat(full_path, &st_buf) || !S_ISREG(st_buf.st_mode))
+               return NULL;
+       return (fopen(full_path, "r"));
+}
+
 static void read_remotes_file(struct remote *remote)
 {
-       FILE *f = fopen(git_path("remotes/%s", remote->name), "r");
+       FILE *f = open_file(git_path("remotes/%s", remote->name));

        if (!f)
                return;
@@ -173,7 +182,7 @@ static void read_branches_file(struct re
        char *frag;
        char *branch;
        int n = slash ? slash - remote->name : 1000;
-       FILE *f = fopen(git_path("branches/%.*s", n, remote->name), "r");
+       FILE *f = open_file(git_path("branches/%.*s", n, remote->name));
        char *s, *p;
        int len;

--
git-1.5.4
-- 
H.Merijn Brand         Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using & porting perl 5.6.2, 5.8.x, 5.10.x  on HP-UX 10.20, 11.00, 11.11,
& 11.23, SuSE 10.1 & 10.2, AIX 5.2, and Cygwin.       http://qa.perl.org
http://mirrors.develooper.com/hpux/            http://www.test-smoke.org
                        http://www.goldmark.org/jeff/stupid-disclaimers/
Next: Mike Ralphson
Message 1 of 27 in “opening files in remote.c should ensure it is opening a file”
  1. opening files in remote.c should ensure it is opening a fileH.Merijn Brand, Feb 8, 2008
  2. Mike RalphsonFeb 8, 2008
  3. H.Merijn BrandFeb 8, 2008
  4. H.Merijn BrandFeb 18, 2008
  5. Junio C HamanoFeb 18, 2008
  6. H.Merijn BrandFeb 18, 2008
  7. Daniel BarkalowFeb 8, 2008
  8. Johannes SchindelinFeb 8, 2008
  9. Junio C HamanoFeb 9, 2008
  10. Daniel BarkalowFeb 9, 2008
  11. Junio C HamanoFeb 8, 2008
  12. Johannes SchindelinFeb 8, 2008
  13. H.Merijn BrandFeb 9, 2008
  14. Morten WelinderFeb 8, 2008
  15. Junio C HamanoFeb 8, 2008
  16. Johannes SchindelinFeb 8, 2008
  17. Junio C HamanoFeb 8, 2008
  18. Johannes SchindelinFeb 8, 2008
  19. Brandon CaseyFeb 8, 2008
  20. Brandon CaseyFeb 8, 2008
  21. Junio C HamanoFeb 9, 2008
  22. Brandon CaseyFeb 9, 2008
  23. Add compat/fopen.c which returns NULL on attempt to open directoryBrandon Casey, Feb 9, 2008
  24. H.Merijn BrandFeb 11, 2008
  25. H.Merijn BrandFeb 11, 2008
  26. Junio C HamanoFeb 12, 2008
  27. H.Merijn BrandFeb 12, 2008

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.