From: William Pursell <bill.pursell@gmail.com>
To: Alex Riesen <raa.lkml@gmail.com>
Cc: William Pursell <bill.pursell@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Andreas Schwab <schwab@linux-m68k.org>,
git@vger.kernel.org
Subject: Re: permissions
Date: Wed, 09 Jun 2010 00:29:04 -1000 [thread overview]
Message-ID: <4C0F6CF0.3020603@wpursell.net> (raw)
In-Reply-To: <AANLkTikGpbeP1ba0y0oUsWGQXsrL8Z-GKjybCB83W_FJ@mail.gmail.com>
Alex Riesen wrote:
> On Wed, Jun 9, 2010 at 00:27, William Pursell <bill.pursell@gmail.com> wrote:
>> Junio C Hamano wrote:
>>> Alex Riesen <raa.lkml@gmail.com> writes:
>>>
>>>> On Tue, Jun 8, 2010 at 12:25, William Pursell <bill.pursell@gmail.com> wrote:
>>>>> Here's a patch. This doesn't address the issue of a damaged
>>>>> repository, but just catches access errors and permissions.
>>>> The change looks fishy.
>>>>
>>>> The patch moves the function is_git_directory at the level of user
>>>> interface where it wasn't before: it now complains and die.
>>>> Not all callers of the function call it only to die if it fails.
>>> Thanks for shooting it down before I had to look at it ;-)
>> The point of the patch is that it now complains and dies.
>
> At wrong point. Points, actually. There are many callers of the
> function you modified. You should have looked at them all.
I did look at all 4 calls, and it seemed to me
that localizing the change in one location is a better
design than adding logic to 4 different locations.
>> Perhaps I'm being obtuse, but can you describe a situation
>> in which this causes git to terminate inappropriately?
>
> Maybe. BTW, can you? (if you try, I mean).
No, I can't. As far as I can tell, the patch adds
exactly the functionality that I want it to add. You
do make good points about its problems below, however,
and you are right that I did miss the point of
your criticism. Thank you for clarifying.
> But your questions
> misses the point of my complaint about your patch:
>
> The patch makes the function you modified act not as one
> can guess from its other uses. Imagine someone replaced
> open(2) implementation to kill your program everytime you
> tried to open /etc/passwd. How'd you like that?
I think there is a substantial difference between changing
a basic library call and changing a statically linked
function called from only 4 locations, but I'll agree
that you have a valid point about the function not
behaving as expected. The functionality I've added disagrees
with the name of the function, so on that point alone I will
agree that the patch is no good.
>
> That alone is reason enough to dislike the change and put
> you personally into a list of persons to be careful with (as
> you don't seem to care about what happens with the code
> after you changed it).
I do care quite a lot actually. My primary goal
was to minimize the changes, and it seemed that
is_git_directory() was the right place to make
the change with minimal impact. Perhaps the following
patch would be more to your liking:
diff --git a/setup.c b/setup.c
index 7e04602..b25da21 100644
--- a/setup.c
+++ b/setup.c
@@ -303,6 +303,9 @@ const char *read_gitfile_gently(const char *path)
buf = dir;
}
+ if (access(dir, X_OK))
+ die_errno("Unable to access %s", dir);
+
if (!is_git_directory(dir))
die("Not a git repository: %s", dir);
path = make_absolute_path(dir);
@@ -370,6 +373,9 @@ const char *setup_git_directory_gently(int *nongit_ok)
*nongit_ok = 1;
return NULL;
}
+ if (access(gitdirenv, X_OK))
+ die_errno("Unable to access %s", gitdirenv);
+
die("Not a git repository: '%s'", gitdirenv);
}
@@ -407,6 +413,11 @@ const char *setup_git_directory_gently(int *nongit_ok)
}
if (is_git_directory(DEFAULT_GIT_DIR_ENVIRONMENT))
break;
+ if (access(DEFAULT_GIT_DIR_ENVIRONMENT, X_OK)
+ && errno != ENOENT )
+ die_errno("Unable to access %s/%s",
+ cwd, DEFAULT_GIT_DIR_ENVIRONMENT);
+
if (is_git_directory(".")) {
inside_git_dir = 1;
if (!work_tree_env)
diff --git a/t/t0002-gitfile.sh b/t/t0002-gitfile.sh
index cb14425..9f6f756 100755
--- a/t/t0002-gitfile.sh
+++ b/t/t0002-gitfile.sh
@@ -46,7 +46,7 @@ test_expect_success 'bad setup: invalid .git file path' '
echo "git rev-parse accepted an invalid .git file path"
false
fi &&
- if ! grep "Not a git repository" .err
+ if ! grep "Unable to access $REAL.not" .err
then
echo "git rev-parse returned wrong error"
false
--
William Pursell
next prev parent reply other threads:[~2010-06-09 10:29 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-05 9:33 permissions William Pursell
2010-06-05 9:50 ` permissions Andreas Schwab
2010-06-05 18:23 ` permissions William Pursell
2010-06-06 6:45 ` permissions Alex Riesen
2010-06-06 9:36 ` permissions William Pursell
2010-06-06 12:45 ` permissions Alex Riesen
2010-06-06 19:54 ` permissions Junio C Hamano
2010-06-08 10:25 ` permissions William Pursell
2010-06-08 14:52 ` permissions Alex Riesen
2010-06-08 21:05 ` permissions Junio C Hamano
2010-06-08 22:27 ` permissions William Pursell
2010-06-09 7:20 ` permissions Alex Riesen
2010-06-09 10:29 ` William Pursell [this message]
2010-06-09 12:06 ` permissions Thomas Rast
2010-06-09 13:00 ` permissions Alex Riesen
2010-06-09 12:56 ` permissions Alex Riesen
2010-06-09 10:39 ` permissions Steven Michalske
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C0F6CF0.3020603@wpursell.net \
--to=bill.pursell@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=raa.lkml@gmail.com \
--cc=schwab@linux-m68k.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).