aboutsummaryrefslogtreecommitdiffstats
path: root/ls-refs.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-04-22 13:42:44 -0700
committerJunio C Hamano <gitster@pobox.com>2020-04-22 13:42:44 -0700
commit5ee5788af680ebc20b138f40fb0bfd79494ba95c (patch)
tree562784f7cd50ff5a3d11a0d44372c71724a59976 /ls-refs.c
parentdfe48154b16e35ea01795aa94c7e8686f084e2c3 (diff)
parentcacae4329fa4779127f4944e7807512e7b9e8cac (diff)
downloadgit-5ee5788af680ebc20b138f40fb0bfd79494ba95c.tar.gz
Merge branch 'jk/harden-protocol-v2-delim-handling'
The server-end of the v2 protocol to serve "git clone" and "git fetch" was not prepared to see a delim packets at unexpected places, which led to a crash. * jk/harden-protocol-v2-delim-handling: test-lib-functions: simplify packetize() stdin code upload-pack: handle unexpected delim packets test-lib-functions: make packetize() more efficient
Diffstat (limited to 'ls-refs.c')
-rw-r--r--ls-refs.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ls-refs.c b/ls-refs.c
index 818aef70a0..50d86866c6 100644
--- a/ls-refs.c
+++ b/ls-refs.c
@@ -93,7 +93,7 @@ int ls_refs(struct repository *r, struct argv_array *keys,
git_config(ls_refs_config, NULL);
- while (packet_reader_read(request) != PACKET_READ_FLUSH) {
+ while (packet_reader_read(request) == PACKET_READ_NORMAL) {
const char *arg = request->line;
const char *out;
@@ -105,6 +105,9 @@ int ls_refs(struct repository *r, struct argv_array *keys,
argv_array_push(&data.prefixes, out);
}
+ if (request->status != PACKET_READ_FLUSH)
+ die(_("expected flush after ls-refs arguments"));
+
head_ref_namespaced(send_ref, &data);
for_each_namespaced_ref(send_ref, &data);
packet_flush(1);