Subject: Re: printing with acroread7 and cups
To: Eric Haszlakiewicz <erh@nimenees.com>
From: Bill Studenmund <wrstuden@netbsd.org>
List: tech-kern
Date: 09/02/2005 11:14:57
--ibTvN161/egqYuK8
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Thu, Sep 01, 2005 at 10:19:15PM -0500, Eric Haszlakiewicz wrote:
> On Thu, Sep 01, 2005 at 05:18:20PM -0700, Bill Studenmund wrote:
> > Why is this a good thing? My gut instinct is that if we want a chroot, =
we
> > should chroot.
>=20
> The more I think about it, the more I like that idea, but getting the
> overlay fs working right will probably be difficult. Then there's various
Please note that we have an "overlayfs" file system that does NOT do what=
=20
you want. So please be careful with your wording. :-)
> other details to worry about, like: does a non-emul process get to escape
> the chroot? how about a different-emul one? etc... This quickly becomes=
a
> much more significant task.
>=20
> > Yes, the semi-chroot we have has issues, but I think we will run into m=
ore
> > of them if we lie like this. I also think part of it is I usually run=
=20
> > linux apps outside of the /emul/linux area.
> >=20
> > I guess I wouldn't mind if we did something where /emul/linux/ disapear=
d=20
> > and / turned into /../ or something like that.
> >=20
> > I'll be honest, I am not dead set against this. Concerned, but not dead=
=20
> > set. So I'm willing to be convinced. :-)
>=20
> Let see if enumerating the cases affected by this change brings
> anything to light:
>=20
> 1) getcwd for any path not inside the /emul directory and non-existant
> within /emul stays as is, so there is no change from existing
> behaviour.
>=20
> 2) The case for when an emul-process is in a non-/emul path that also
> exists under /emul is a bit weird:
> This can only happen when an explicit chdir("/../foo") was done.
Actually, no. It can also happen when the user was in such a directory=20
(from a NetBSD shell) and ran a Linux program. Say I'm looking at stuff=20
and I cd to /usr or /usr/bin or /etc. Then say I run a command that's=20
linux based. Voila, cwd for the linux command has a cwd that's outside=20
/emul/linux and mirrored. :-)
> The new getcwd will return a normal path, so a emul-process chdiring
> back to that directory will end up in the /emul directory.
> However, any syscalls that access the filesystem do the emul-check
> so as far as the emul-process is concerned it can't actually=20
> effectively get to the non-emul directory even if that is its cwd.
> If it's using an absolute path it can reference files using /../,
> but that doesn't work for relative paths. Therefore getcwd should NOT
> return /../foo so the files accessed through relative paths are the
> same ones accessed by anything that builds a full path with
> getcwd() + a filename.
> The behaviour of the emul'd getcwd doesn't change here.
>=20
> 3) Directory within the /emul tree. New getcwd acts differently.
> 3a) When used entirely within the emul-process the de-emul'd path
> works fine, since the emul-check throws any accesses of non-/emul
> paths back into the /emul tree.
>=20
> 3b) Non-emul processes passing paths into an emul-process should
> also work fine since the emul-process can use the /emul paths.
> If it does a chdir then a getcwd the paths will be different
> but that happens anyway if there's a symlink in the path.
> A program that explicitly looks for those symlinks might get
> confused, but I don't think that's very likely.
> This is the case that breaks currently with acroread b/c
> acroread does a chdir, getcwd, then uses that path to build
> a new path to the file.
> I believe this is also the case that affects realpath() when
> called with a relative path.
>=20
> 3c) An emul-process passes a path out to a non-emul-process.
> e.g. a shell script running under /emul/linux/bin/bash uses
> the output of pwd to build an argument for pax (or anything
> else which doesn't exist in /emul/linux).
> This problem exists now to some extent, and having getcwd
> adjust /emul paths will make it somewhat worse. I'm not
> sure how much worse since I'm drawing a blank on an actual
> example of when this happens.
Ok, I'm puzzled. What case did you actually make better?
Take care,
Bill
--ibTvN161/egqYuK8
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (NetBSD)
iD8DBQFDGJahWz+3JHUci9cRAiI8AJ9pkHNALz/igiLgcPkVNhp0vhmvdgCfe/H0
1HVlRh1CH7PMD+viJWu3P+U=
=oKXC
-----END PGP SIGNATURE-----
--ibTvN161/egqYuK8--