resolve_ref(): do not follow incorrectly-formatted symbolic refs

Emit a warning and fail if a symbolic reference refers to an incorrectly-formatted refname. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Michael Haggerty committed Sep 15, 2011 at 23:10 UTC 313fb010da4343eca22ee48a2cc18048d999de53
1 file changed +5
refs.c
+5
@@ -581,6 +581,11 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *
581 buf = buffer + 4;
582 while (isspace(*buf))
583 buf++;
584 + if (check_refname_format(buf, REFNAME_ALLOW_ONELEVEL)) {
585 + warning("symbolic reference in %s is formatted incorrectly",
586 + path);
587 + return NULL;
588 + }
589 ref = strcpy(ref_buffer, buf);
590 if (flag)
591 *flag |= REF_ISSYMREF;