From: Michael Haggerty Date: Wed, 12 Oct 2011 18:01:47 GMT Subject: Re: [PATCH 2/2] Restrict ref-like names immediately below $GIT_DIR Message-ID: <4E95D60B.5030904@alum.mit.edu> In-Reply-To: <7vvcru9k22.fsf_-_@alter.siamese.dyndns.org> On 10/12/2011 07:49 PM, Junio C Hamano wrote: > diff --git a/refs.c b/refs.c > index e3692bd..e54c482 100644 > --- a/refs.c > +++ b/refs.c > @@ -994,12 +994,34 @@ const char *ref_fetch_rules[] = { > NULL > }; > > +static int refname_ok_at_root_level(const char *str, int len) > +{ > + int seen_non_root_char = 0; > + > + while (len--) { > + char ch = *str++; > + > + if (ch == '/') > + return 1; > + /* > + * Only accept likes of .git/HEAD, .git/MERGE_HEAD at > + * the root level as a ref. > + */ > + if (ch != '_' && (ch < 'A' || 'Z' < ch)) > + seen_non_root_char = 1; > + } > + return !seen_non_root_char; > +} > + Nit: the seen_non_root_char variable can be replaced by an early "return 0" from the loop and "return 1" if the loop falls through. Michael -- Michael Haggerty mhagger@alum.mit.edu http://softwareswirl.blogspot.com/