diff options
author | Junio C Hamano <gitster@pobox.com> | 2021-10-12 13:51:49 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-10-12 13:51:49 -0700 |
commit | 9e25a2e85a5d03eae371604a6cf8233aba80070b (patch) | |
tree | 4876329eac2ae975b4c9b8238739dadaca4be596 | |
parent | Merge branch 'ab/make-clean-depend-dirs' into maint (diff) | |
parent | connect: also update offset for features without values (diff) | |
download | tgif-9e25a2e85a5d03eae371604a6cf8233aba80070b.tar.xz |
Merge branch 'ah/connect-parse-feature-v0-fix' into maint
Protocol v0 clients can get stuck parsing a malformed feature line.
* ah/connect-parse-feature-v0-fix:
connect: also update offset for features without values
-rw-r--r-- | connect.c | 2 | ||||
-rwxr-xr-x | t/t5704-protocol-violations.sh | 15 |
2 files changed, 17 insertions, 0 deletions
@@ -557,6 +557,8 @@ const char *parse_feature_value(const char *feature_list, const char *feature, i if (!*value || isspace(*value)) { if (lenp) *lenp = 0; + if (offset) + *offset = found + len - feature_list; return value; } /* feature with a value (e.g., "agent=git/1.2.3") */ diff --git a/t/t5704-protocol-violations.sh b/t/t5704-protocol-violations.sh index 5c941949b9..bc393d7c31 100755 --- a/t/t5704-protocol-violations.sh +++ b/t/t5704-protocol-violations.sh @@ -32,4 +32,19 @@ test_expect_success 'extra delim packet in v2 fetch args' ' 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 |