Re: [PATCH v2] receive-pack: not receive pack file with large object
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 30, 2021, 16:49 UTC
- Message-ID
- <xmqqczoqdn4m.fsf@gitster.g>
- In-Reply-To
- <20210930132004.16075-1-chiyutianyi@gmail.com>
Han Xin <chiyutianyi@gmail.com> writes:
Show 9 quoted lines
> @@ -519,6 +520,8 @@ static void *unpack_raw_entry(struct object_entry *obj,
> shift += 7;
> }
> obj->size = size;
> + if (max_input_object_size && size > max_input_object_size)
> + die(_("object exceeds maximum allowed size "));
>
> switch (obj->type) {
> case OBJ_REF_DELTA:Here obj->size is the inflated payload size of a single entry in the packfile. If it happens to be represented as a base object (i.e. without delta, just deflated), it would be close to the size of the blob in the working tree (but LF->CRLF conversion and the like may further inflate it), but if it is a delta object, this size is just the size of the delta data we feed patch_delta() with, and has no relevance to the actual "file size".
Sure, it is called max_INPUT_object_size and we can say we are not limiting the final disk size, and that might be a workable excuse to check based on the obj->size here, but then its usefulness from the point of view of end users, who decide to set the variable to limit "some" usage, becomes dubious.
So...