|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
test_description='Test responses to violations of the network protocol. In most
|
|
|
|
of these cases it will generally be acceptable for one side to break off
|
|
|
|
communications if the other side says something unexpected. We are mostly
|
|
|
|
making sure that we do not segfault or otherwise behave badly.'
|
|
|
|
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
|
|
. ./test-lib.sh
|
|
|
|
|
|
|
|
test_expect_success 'extra delim packet in v2 ls-refs args' '
|
|
|
|
{
|
|
|
|
packetize command=ls-refs &&
|
|
|
|
packetize "object-format=$(test_oid algo)" &&
|
|
|
|
printf 0001 &&
|
|
|
|
# protocol expects 0000 flush here
|
|
|
|
printf 0001
|
|
|
|
} >input &&
|
|
|
|
test_must_fail env GIT_PROTOCOL=version=2 \
|
|
|
|
git upload-pack . <input 2>err &&
|
|
|
|
test_i18ngrep "expected flush after ls-refs arguments" err
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'extra delim packet in v2 fetch args' '
|
|
|
|
{
|
|
|
|
packetize command=fetch &&
|
|
|
|
packetize "object-format=$(test_oid algo)" &&
|
|
|
|
printf 0001 &&
|
|
|
|
# protocol expects 0000 flush here
|
|
|
|
printf 0001
|
|
|
|
} >input &&
|
|
|
|
test_must_fail env GIT_PROTOCOL=version=2 \
|
|
|
|
git upload-pack . <input 2>err &&
|
|
|
|
test_i18ngrep "expected flush after fetch arguments" err
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'bogus symref in v0 capabilities' '
|
|
|
|
test_commit foo &&
|
|
|
|
oid=$(git rev-parse HEAD) &&
|
|
|
|
dst=refs/heads/foo &&
|
|
|
|
{
|
|
|
|
printf "%s HEAD\0symref object-format=%s symref=HEAD:%s\n" \
|
|
|
|
"$oid" "$GIT_DEFAULT_HASH" "$dst" |
|
|
|
|
test-tool pkt-line pack-raw-stdin &&
|
|
|
|
printf "0000"
|
|
|
|
} >input &&
|
|
|
|
git ls-remote --symref --upload-pack="cat input; read junk;:" . >actual &&
|
|
|
|
printf "ref: %s\tHEAD\n%s\tHEAD\n" "$dst" "$oid" >expect &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_done
|