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

Re: [PATCH] symbolic-ref: check format of given reference

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 18, 2012, 16:39 UTC
Message-ID
<7vr4tc4lsc.fsf@alter.siamese.dyndns.org>
In-Reply-To
<4FDF18E5.7020908@elegosoft.com>
Michael Schubert <mschub@elegosoft.com> writes:
Show 8 quoted lines
>>> Additionally, I had to reindent two lines to make git-am happy
>>> (indent with spaces).
>> 
>> I doubt that it is needed; the '-' lines show runs of HT followed by
>> fewer than 8 SP, which should not trigger "indent with spaces".
>
> I've only noticed because git-am was telling me when I tried to
> apply the patch.? Am I missing something?
Perhaps, but I cannot tell exactly what you are doing wrong.

If you didn't touch lines you did not have to in a way to break indentation and cause "indent with spaces", "am" would not have complained (it only looks at "+" lines).

Attached is a patch based on your patch but removes the unnecessary re-indentation part, and "git am" happily applies it to my tree without complaining. Does it apply for you (obviously to a revision without your patch) cleanly without complaint? Otherwise it could be that whitespace categories that are specified for the file in your local attributes file may be different from mine (i.e. an empty set).

-- >8 --
From: Michael Schubert <mschub@elegosoft.com>
Date: Sun, 17 Jun 2012 22:26:37 +0200
Subject: [PATCH] symbolic-ref: check format of given reference

Currently, it's possible to update HEAD with a nonsense reference since no strict validation is performed. Example:

	$ git symbolic-ref HEAD 'refs/heads/master
    >
    >
    > '
Fix this by checking the given reference with check_refname_format().
Signed-off-by: Michael Schubert <mschub@elegosoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin/symbolic-ref.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c
index 801d62e..a529541 100644
--- a/builtin/symbolic-ref.c
+++ b/builtin/symbolic-ref.c
@@ -44,13 +44,15 @@ int cmd_symbolic_ref(int argc, const char **argv, const char *prefix)
 	git_config(git_default_config, NULL);
 	argc = parse_options(argc, argv, prefix, options,
 			     git_symbolic_ref_usage, 0);
-	if (msg &&!*msg)
+	if (msg && !*msg)
 		die("Refusing to perform update with empty message");
 	switch (argc) {
 	case 1:
 		check_symref(argv[0], quiet);
 		break;
 	case 2:
+		if (check_refname_format(argv[1], 0))
+			die("No valid reference format: '%s'", argv[1]);
 		if (!strcmp(argv[0], "HEAD") &&
 		    prefixcmp(argv[1], "refs/"))
 			die("Refusing to point HEAD outside of refs/");
-- 
1.7.11
Previous: Michael SchubertNext: Junio C Hamano
Message 4 of 8 in “symbolic-ref: check format of given reference”
  1. symbolic-ref: check format of given referenceMichael Schubert, Jun 17, 2012
  2. Junio C HamanoJun 17, 2012
  3. Michael SchubertJun 18, 2012
  4. Junio C HamanoJun 18, 2012
  5. Junio C HamanoJun 18, 2012
  6. Jeff KingJun 19, 2012
  7. Jeff KingJun 19, 2012
  8. Michael SchubertJun 19, 2012

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.