diff --git a/fetch-object-info.c b/fetch-object-info.c index ba7e179c44..287f668a3c 100644 --- a/fetch-object-info.c +++ b/fetch-object-info.c @@ -106,12 +106,13 @@ int fetch_object_info(const enum protocol_version version, struct object_info_ar } } - for (size_t i = 0; - packet_reader_read(reader) == PACKET_READ_NORMAL && - i < args->oids->nr; - i++) { + for (size_t i = 0; i < args->oids->nr; i++) { struct string_list object_info_values = STRING_LIST_INIT_DUP; + if (packet_reader_read(reader) != PACKET_READ_NORMAL) + die(_("object-info: expected %" PRIuMAX " objects, got %" PRIuMAX), + (uintmax_t)args->oids->nr, (uintmax_t)i); + string_list_split(&object_info_values, reader->line, " ", -1); if (strcmp(object_info_values.items[0].string, @@ -150,6 +151,11 @@ int fetch_object_info(const enum protocol_version version, struct object_info_ar string_list_clear(&object_info_values, 0); } + + if (packet_reader_read(reader) != PACKET_READ_FLUSH) + die(_("object-info: expected flush after %" PRIuMAX " objects"), + (uintmax_t)args->oids->nr); + check_stateless_delimiter(stateless_rpc, reader, "stateless delimiter expected"); return 0;