git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "H.Merijn Brand" <h.m.brand@xs4all.nl>
To: git@vger.kernel.org
Subject: [PATCH] opening files in remote.c should ensure it is opening a file
Date: Fri, 8 Feb 2008 17:46:54 +0100	[thread overview]
Message-ID: <20080208174654.2e9e679c@pc09.procura.nl> (raw)

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/

             reply	other threads:[~2008-02-08 16:47 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-08 16:46 H.Merijn Brand [this message]
2008-02-08 17:25 ` [PATCH] opening files in remote.c should ensure it is opening a file Mike Ralphson
2008-02-08 20:04   ` H.Merijn Brand
2008-02-18  9:10     ` H.Merijn Brand
2008-02-18  9:30       ` Junio C Hamano
2008-02-18 11:31         ` H.Merijn Brand
2008-02-08 20:36   ` Daniel Barkalow
2008-02-08 20:44     ` Johannes Schindelin
2008-02-09  5:27     ` Junio C Hamano
2008-02-09  5:54       ` Daniel Barkalow
2008-02-08 20:09 ` Junio C Hamano
2008-02-08 20:38   ` Johannes Schindelin
2008-02-09 10:03   ` H.Merijn Brand
2008-02-08 20:15 ` Morten Welinder
2008-02-08 20:33   ` Junio C Hamano
2008-02-08 20:40     ` Johannes Schindelin
2008-02-08 21:19       ` Junio C Hamano
2008-02-08 21:47         ` Johannes Schindelin
2008-02-08 20:58     ` Brandon Casey
2008-02-08 21:14       ` Brandon Casey
2008-02-09  5:12       ` Junio C Hamano
2008-02-09  1:20     ` Brandon Casey
2008-02-09  2:32       ` [PATCH] Add compat/fopen.c which returns NULL on attempt to open directory Brandon Casey
2008-02-11  9:29         ` H.Merijn Brand
2008-02-11 10:15           ` H.Merijn Brand
2008-02-12  0:20             ` Junio C Hamano
2008-02-12 15:27               ` H.Merijn Brand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080208174654.2e9e679c@pc09.procura.nl \
    --to=h.m.brand@xs4all.nl \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).