diff options
author | Miles Bader <miles@gnu.org> | 1997-02-23 22:09:31 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 1997-02-23 22:09:31 +0000 |
commit | 6bac11d99322f3cdf751b43dc3b3456039fab26c (patch) | |
tree | bdec620c134a6b498fc21ea5d3825762a79ed558 /sysdeps/mach/hurd/chroot.c | |
parent | 4dea6fa212ba120779f4a1f9237e02b20ab74aa5 (diff) | |
download | glibc-6bac11d99322f3cdf751b43dc3b3456039fab26c.tar.gz glibc-6bac11d99322f3cdf751b43dc3b3456039fab26c.tar.xz glibc-6bac11d99322f3cdf751b43dc3b3456039fab26c.zip |
(__libc_argv, __libc_argc): Make extern. (__hurd_threadvar_max, __hurd_threadvar_stack_offset, __hurd_threadvar_stack_mask): New variables. cvs/libc-970224
Diffstat (limited to 'sysdeps/mach/hurd/chroot.c')
-rw-r--r-- | sysdeps/mach/hurd/chroot.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sysdeps/mach/hurd/chroot.c b/sysdeps/mach/hurd/chroot.c index f010c368ed..c39493e272 100644 --- a/sysdeps/mach/hurd/chroot.c +++ b/sysdeps/mach/hurd/chroot.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -28,7 +28,8 @@ Cambridge, MA 02139, USA. */ int DEFUN(chroot, (file_name), CONST char *file_name) { - file_t file, dir; + error_t err; + file_t file, dir, root; file = __file_name_lookup (file_name, O_EXEC, 0); if (file == MACH_PORT_NULL) @@ -38,6 +39,12 @@ DEFUN(chroot, (file_name), CONST char *file_name) if (dir == MACH_PORT_NULL) return -1; - _hurd_port_set (&_hurd_ports[INIT_PORT_CRDIR], dir); + /* Prevent going through DIR's .. */ + err = __file_reparent (dir, MACH_PORT_NULL, &root); + __mach_port_deallocate (__mach_task_self (), dir); + if (err) + return __hurd_fail (err); + + _hurd_port_set (&_hurd_ports[INIT_PORT_CRDIR], root); return 0; } |