Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: PATCH: tail-dropping in files module mkdir



On Aug 4,  8:40pm, Clint Adams wrote:
} Subject: Re: PATCH: tail-dropping in files module mkdir
}
} > There are some special cases involving paths
} > that contain "../" that I'm a bit worried about, but I think most of
} > those (and paths with lots of consecutive slashes) would fail zsh's
} > constant-PATH_MAX tests already in boundary cases, so probably nothing
} > will become broken that wasn't already.
} 
} I suggest a compat.c wrapper around realpath().

You misunderstand the problem.  It isn't that we need the real path in
order to determine the value of pathmax, it's this sort of silliness:

/usr/local/../bin/../doc/../etc/../include/../lib/../local/blahblahblah

If the length of the "blahblahblah" part approaches pathmax, you get an
ENAMETOOLONG error even though you could chdir to each directory from
left to right and eventually reach a legitimate file.  Computing the
realpath() in such a case won't change anything.

There's one other problem with that sort of path; if you do

mkdir -p /usr/mountpoint/newdir1/../../newdir2/blahblahblah

then the pathmax is that of /usr/mountpoint, but newdir2/blahblahblah is
under /usr.  realpath() is going to fail with ENOTDIR in that case, so
again it doesn't help; and if newdir1 already exists, then pathconf()
itself will discover that /usr/mountpoint/newdir1/../.. refers to /usr.
Or at least I hope it will, or this is almost a waste of time.

On Aug 4,  8:52pm, Clint Adams wrote:
[About determining a buffer size for readlink()]
} 
} > Only if it's a relative rather than absolute link.
} 
} I don't understand the significance.

It would make sense that an absolute link from the root could be as long
as the longest path on the filesystem to which the link refers, no?

But a relative link has to be concatenated with the path to the directory
containing it in order to resolve the link, so it couldn't be longer than
the longest path on the filesystem of the containing directory.

However, I don't actually know how this works in the kernel and/or the FS
drivers.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   



Messages sorted by: Reverse Date, Date, Thread, Author