From: Jeff King Date: Wed, 23 Apr 2014 19:16:28 GMT Subject: Re: [PATCH v2] git tag --contains : avoid stack overflow Message-ID: <20140423191628.GA20596@sigill.intra.peff.net> In-Reply-To: On Wed, Apr 23, 2014 at 12:12:14PM -0700, Junio C Hamano wrote: > > +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. > 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