Re: [PATCH v3 2/2] submodule: drop the top-level requirement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



John Keeping <john@xxxxxxxxxxxxx> writes:

> On Thu, Apr 18, 2013 at 03:40:41PM -0700, Junio C Hamano wrote:
>> John Keeping <john@xxxxxxxxxxxxx> writes:
>> 
>> > +relative_path ()
>> > +{
>> > +	local target curdir result
>> > +	target=$1
>> > +	curdir=${2-$wt_prefix}
>> > +	curdir=${curdir%/}
>> > +	result=
>> > +
>> > +	while test -n "$curdir"
>> > +	do
>> > +		case "$target" in
>> > +		"$curdir/"*)
>> > +			target=${target#$curdir/}
>> > +			break
>> > +			;;
>> > +		esac
>> 
>> Could $curdir have glob wildcard to throw this part of the logic
>> off?  It is OK to have limitations like "you cannot have a glob
>> characters in your path to submodule working tree" (at least until
>> we start rewriting these in C or Perl or Python), but we need to be
>> aware of them.
>
> I think the use of "#" instead of "##" saves us here because even with a
> wildcard in $curdir the case statement matches literally, 

If you have curdir=a*b and target=adropb/c/d/e, the chopping itself

	target=${target#$curdir/}

would happily chop "adropb/" from the target, but because the dq
around "$curdir/"* in the case arm label enforces that target must
literally match curdir followed by a slash, we do not even come to
the chomping part.

I still have not convinced myself that it is impossible for somebody
more clever than I to craft a pair of target and curdir that breaks
it, though.  (target="a*b/c/d", curdir="a*b") is correctly chopped,
so that is not it.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]