Re: [PATCH 2/2] Restrict ref-like names immediately below $GIT_DIR
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Oct 12, 2011, 18:07 UTC
- Message-ID
- <7vr52i9j8g.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <4E95D60B.5030904@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 31 quoted lines
> 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.Hmm, I thought that would fail when you feed "refs/heads/master" to the function.