Re: [PATCH v2] git tag --contains : avoid stack overflow
- From
Jeff King <peff@peff.net>
- Date
- Apr 23, 2014, 19:16 UTC
- Message-ID
- <20140423191628.GA20596@sigill.intra.peff.net>
- In-Reply-To
- <xmqqeh0nzwq9.fsf@gitster.dls.corp.google.com>
On Wed, Apr 23, 2014 at 12:12:14PM -0700, Junio C Hamano wrote:
Show 6 quoted lines
> > +ulimit_stack="ulimit -s 64" > > +test_lazy_prereq ULIMIT 'bash -c "'"$ulimit_stack"'"' > > With this implementaion, ULIMIT implies bash, and we use bash that > appears on user's PATH that may not be the one the user chose to run > git with. Can't we fix both of them by using $SHELL_PATH?
I don't think so. The point is that we _must_ use bash here, not any POSIX shell. So my $SHELL_PATH is /bin/sh, which is dash, and would not run the test.
We want to run "some bash" if we can. We may pick a bash on the user's PATH that is not what they put into $SHELL_PATH, but that should be relatively rare. And the consequence is that either that bash works fine and we run the test, or it does not, and we skip the test.
Show 7 quoted lines
> How about doing it along this line instead?
>
> run_with_limited_stack () {
> "$SHELL_PATH" -c "ulimit -s 64 && $*"
> }
>
> test_lazy_prereq ULIMIT "run_with_limited_stack true"That's a much more direct test. I like it (aside from the $SHELL_PATH thing as described above).
-Peff