Re: sys_chroot+sys_fchdir Fix

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Al Viro
Date: Wednesday, September 26, 2007 - 8:59 pm

On Thu, Sep 27, 2007 at 02:01:37AM +0200, Adrian Bunk wrote:

chroot() is present in v7, thank you very much.  /usr/sys/sys/sys4.c has

chdir()
{
        chdirec(&u.u_cdir);
}

chroot()
{
        if (suser())
                chdirec(&u.u_rdir);
}

and back then it didn't stop lookups by .. at all - u_rdir is only used
in the beginning of namei() (when pathname starts with /), plus the obvious
refcounting in exit()/newproc().  So give me a break - back when it had
been introduced, it didn't do anything jail-like _at_ _all_.

That check appears only in BSD:
@@ -1,4 +1,4 @@
-/*     vfs_lookup.c    4.4     03/06/81        */
+/*     vfs_lookup.c    4.5     81/03/09        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -107,6 +107,9 @@
        u.u_segflg = 1;
        eo = 0;
        bp = NULL;
+       if (dp == u.u_rdir && u.u_dent.d_name[0] == '.' &&
+           u.u_dent.d_name[1] == '.' && u.u_dent.d_name[2] == 0)
+               goto cloop;
 
 eloop:

with spectaculary lousy commit message ("lint and a minor fixed") by
wnj.  Feel free to ask Bill Joy WTF he had intended.  At a guess,
more consistent behaviour in chrooted environment (i.e. pathname
resolution looking as if the subtree had been everything).

To talk about root-safety of _anything_ at that point is bloody ridiculous.
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
sys_chroot+sys_fchdir Fix, majkls, (Wed Sep 19, 12:19 am)
Re: sys_chroot+sys_fchdir Fix, Alan Cox, (Wed Sep 19, 2:40 am)
Re: sys_chroot+sys_fchdir Fix, Bill Davidsen, (Wed Sep 19, 11:27 am)
Re: sys_chroot+sys_fchdir Fix, Alan Cox, (Wed Sep 19, 11:45 am)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 19, 3:24 pm)
Re: sys_chroot+sys_fchdir Fix, Phillip Susi, (Fri Sep 21, 10:39 am)
Re: sys_chroot+sys_fchdir Fix, Alan Cox, (Fri Sep 21, 11:10 am)
Re: sys_chroot+sys_fchdir Fix, Phillip Susi, (Tue Sep 25, 1:53 pm)
Re: sys_chroot+sys_fchdir Fix, Al Viro, (Tue Sep 25, 5:23 pm)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 3:34 am)
Re: sys_chroot+sys_fchdir Fix, Alan Cox, (Wed Sep 26, 4:21 am)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 4:22 am)
Re: sys_chroot+sys_fchdir Fix, Alan Cox, (Wed Sep 26, 4:38 am)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 4:56 am)
Re: sys_chroot+sys_fchdir Fix, Alan Cox, (Wed Sep 26, 7:10 am)
Re: sys_chroot+sys_fchdir Fix, Chris Adams, (Wed Sep 26, 8:03 am)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 9:54 am)
Re: sys_chroot+sys_fchdir Fix, Alan Cox, (Wed Sep 26, 10:04 am)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 10:18 am)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 10:28 am)
Re: sys_chroot+sys_fchdir Fix, Alan Cox, (Wed Sep 26, 10:29 am)
Re: sys_chroot+sys_fchdir Fix, Al Viro, (Wed Sep 26, 11:40 am)
Re: sys_chroot+sys_fchdir Fix, Christer Weinigel, (Wed Sep 26, 12:24 pm)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 2:19 pm)
Re: sys_chroot+sys_fchdir Fix, Adrian Bunk, (Wed Sep 26, 2:55 pm)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 4:35 pm)
Re: sys_chroot+sys_fchdir Fix, Adrian Bunk, (Wed Sep 26, 5:01 pm)
Re: sys_chroot+sys_fchdir Fix, Al Viro, (Wed Sep 26, 8:59 pm)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Wed Sep 26, 11:42 pm)
Re: sys_chroot+sys_fchdir Fix, Adrian Bunk, (Wed Sep 26, 11:53 pm)
Re: sys_chroot+sys_fchdir Fix, Christer Weinigel, (Thu Sep 27, 12:28 am)
Re: sys_chroot+sys_fchdir Fix, Theodore Tso, (Thu Sep 27, 4:23 am)
Re: sys_chroot+sys_fchdir Fix, Bill Davidsen, (Thu Sep 27, 7:36 am)
Re: sys_chroot+sys_fchdir Fix, David Newall, (Thu Sep 27, 6:06 pm)