|  | #!/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-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_grep "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_grep "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 |