Subject: Re: [PATCH] object-name: reject too-deep recursive ancestor queries

From: Junio C Hamano <[email-masked]>
Date: Fri, 24 Nov 2023 18:44:33 +0900

Patrick Steinhardt <[email-masked]> writes:

> I have to wonder whether we should tighten restrictions even further:
> instead of manually keeping track of how deep in the stack we are, we
> limit the length of revisions to at most 1MB. I would claim that this
> limit is sufficiently large to never be a problem in practice.

Tempting.

> Revisions
> are limited to 4kB on most platforms anyway due to the maximum path
> length.

I do not quite get this part, though.

When we get "HEAD~~~~~~~~~^2~~~~~~" from the user, do we somehow try
to create a file or a directory with that name and fail due to
ENAMETOOLONG?

There are ways like "git rev-list --stdin" to cause Git read input
lines of arbitrary length, so I do not think the command line length
limit does not come into the picture, either.

But I do agree that the only useful use of such a revision string
that is longer than 1MB would be to attack.