On Mon, Oct 03, 2016 at 11:50:30PM -0700, Jacob Keller wrote: > > Note that our normalization doesn't actually look at the > > filesystem, so it can still be fooled by crossing symbolic > > links. But that's also true of absolute paths, so it's not a > > good reason to disallow only relative paths (it's > > potentially a reason to switch to real_path(), but that's a > > separate and non-trivial change). > > Hmm, ya using real_path would fix that but I definitely agree that's > not trivial and can be done in the future if we think it is or becomes > necessary.
I did look into this briefly. The trick is that real_path() assumes relative paths are relative from the current directory (and does chdir() trickery to get the filesystem to resolve things for us). So you'd really need a "real_path_from" that chdirs to the relative base, issues the real_path() from there, and then chdirs back to the original cwd. Which I guess is no less gross than what real_path() is doing itself internally, but it's definitely something for another patch. Given the fact that we don't check it now and nobody has complained leads me to believe that nobody really cares. Actually, given the fact that we didn't allow relative bases in recursive alternates, I suspect that very few people are using complicated alternate setups in the first place. -Peff