git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 08/11] resolve_gitlink_ref_recursive(): drop arbitrary refname length limit

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Oct 15, 2014, 15:06 UTC
Message-ID
<1413385583-4872-9-git-send-email-mhagger@alum.mit.edu>
In-Reply-To
<1413385583-4872-1-git-send-email-mhagger@alum.mit.edu>
This limit was added in
    0ebde32 (Add 'resolve_gitlink_ref()' helper function - 2007-04-09)
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---
Theoretically, somebody else might be relying on
resolve_gitlink_ref_recursive() to fail for too-long reference names
to prevent path.c's pitiful error handling from returning "/bad-path/"
and causing a nonsensical file lookup. I doubt it, but if somebody is
worried about it we could leave out this patch and instead build the
MAXREFLEN check into parse_ref().

Long-term, I think we should fix up path.c to remove its PATH_MAX limits. I've started working on that.

 refs.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/refs.c b/refs.c
index 9f2a0f8..e1aa6a4 100644
--- a/refs.c
+++ b/refs.c
@@ -1279,7 +1279,6 @@ static struct ref_dir *get_loose_refs(struct ref_cache *refs)
 
 /* We allow "recursive" symbolic refs. Only within reason, though */
 #define MAXDEPTH 5
-#define MAXREFLEN (1024)
 
 /*
  * Called by resolve_gitlink_ref_recursive() after it failed to read
@@ -1308,7 +1307,7 @@ static int resolve_gitlink_ref_recursive(struct ref_cache *refs,
 	char buffer[128], *p;
 	char *path;
 
-	if (recursion > MAXDEPTH || strlen(refname) > MAXREFLEN)
+	if (recursion > MAXDEPTH)
 		return -1;
 	path = *refs->name
 		? git_path_submodule(refs->name, "%s", refname)
-- 
2.1.1
Previous: Michael HaggertyNext: Michael Haggerty
Message 9 of 16 in “Consolidate ref parsing code”
  1. 00/11 Consolidate ref parsing codeMichael Haggerty, Oct 15, 2014
  2. 01/11 strbuf_read_file(): preserve errno on failureMichael Haggerty, Oct 15, 2014
  3. 02/11 handle_missing_loose_ref(): return an intMichael Haggerty, Oct 15, 2014
  4. 03/11 resolve_ref_unsafe(): reverse the logic of the symref conditionalMichael Haggerty, Oct 15, 2014
  5. 04/11 resolve_ref_unsafe(): use skip_prefix() to skip over "ref:"Michael Haggerty, Oct 15, 2014
  6. 05/11 refs.c: refactor resolve_ref_unsafe() to use strbuf internallyMichael Haggerty, Oct 15, 2014
  7. 06/11 refs.c: move ref parsing code out of resolve_ref()Michael Haggerty, Oct 15, 2014
  8. 07/11 handle_missing_loose_ref(): inline functionMichael Haggerty, Oct 15, 2014
  9. 08/11 resolve_gitlink_ref_recursive(): drop arbitrary refname length limitMichael Haggerty, Oct 15, 2014
  10. 09/11 refs.c: rewrite resolve_gitlink_ref() to use parse_ref()Michael Haggerty, Oct 15, 2014
  11. 10/11 resove_gitlink_packed_ref(): inline functionMichael Haggerty, Oct 15, 2014
  12. 11/11 resolve_gitlink_ref(): remove redundant testMichael Haggerty, Oct 15, 2014
  13. Junio C HamanoOct 16, 2014
  14. Junio C HamanoOct 16, 2014
  15. Michael HaggertyOct 16, 2014
  16. Duy NguyenOct 16, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.