Re: [PATCH] t7406: submodule.<name>.update command must not be run from .gitmodules
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 27, 2017, 03:21 UTC
- Message-ID
- <xmqqr2us7rns.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20170926195413.3916-1-sbeller@google.com>
Stefan Beller <sbeller@google.com> writes:
Show 11 quoted lines
> submodule.<name>.update can be assigned an arbitrary command via setting > it to "!command". When this command is found in the regular config, Git > ought to just run that command instead of other update mechanisms. > > However if that command is just found in the .gitmodules file, it is > potentially untrusted, which is why we do not run it. Add a test > confirming the behavior. > > Suggested-by: Jonathan Nieder <jrnieder@gmail.com> > Signed-off-by: Stefan Beller <sbeller@google.com> > ---
Earlier, we saw:
Ideally we want this test to be super robust: e.g. if it runs the
command but from a different directory, we still want the test to fail,
and if it runs the command but using exec instead of a shell, we still
want the test to fail.and this one (i.e. signal that it is a command by prefixing with '!', and then have a single command that would fail whether it is run via run_command() with or without shell) would satisfy that criteria, I would think.
>> This test for a missing file is certainly a remnant from the >> previous iteration, isn't it? > > Yes. This is a good indicator I need some vacation.
Or just take a deep breath before making a knee-jerk reaction public and instead double-check before sending things out ;-)
Will queue. Thanks.
Show 26 quoted lines
> > Thanks, > Stefan > > t/t7406-submodule-update.sh | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh > index 034914a14f..6f083c4d68 100755 > --- a/t/t7406-submodule-update.sh > +++ b/t/t7406-submodule-update.sh > @@ -406,6 +406,14 @@ test_expect_success 'submodule update - command in .git/config' ' > ) > ' > > +test_expect_success 'submodule update - command in .gitmodules is ignored' ' > + test_when_finished "git -C super reset --hard HEAD^" && > + git -C super config -f .gitmodules submodule.submodule.update "!false" && > + git -C super commit -a -m "add command to .gitmodules file" && > + git -C super/submodule reset --hard $submodulesha1^ && > + git -C super submodule update submodule > +' > + > cat << EOF >expect > Execution of 'false $submodulesha1' failed in submodule path 'submodule' > EOF