Re: [PATCH 29/29] t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jun 26, 2018, 21:13 UTC
- Message-ID
- <CAPig+cRzZ-Nd2b-M8v0NUsLX_gkKwLqyakgcRhwGf3CzsWwxBA@mail.gmail.com>
- In-Reply-To
- <20180626210100.GA3682@sigill.intra.peff.net>
On Tue, Jun 26, 2018 at 5:01 PM Jeff King <peff@peff.net> wrote:
Show 13 quoted lines
> On Tue, Jun 26, 2018 at 04:46:18PM -0400, Eric Sunshine wrote:
> > Some of these dangers can be de-thoothed during the linting phase by
> > defining do-nothing shell functions:
> >
> > cp () { :; }
> > mv () { :; }
> > ln () { :; }
> >
> > That, at least, makes the scariest case ("rm") much less so.
>
> Now that's an interesting idea. We can't catch every dangerous action
> (notably ">" would be hard to override), but it should be pretty cheap
> to cover some obvious ones.Taking the idea a bit further, the 'sed' script could also throw away strings of "../" inside subshells, which would help defang the more difficult cases, like "echo x >../git.c". There are pathological cases, of course, which it wouldn't catch:
P=../git.c
test_expect_success 'foo' '
(
cd dir &&
echo x >$P
)
'but it does help mitigate the issue for the most typical cases.