From d90b74e07b09f87ebbef141b7af6f5adc6093d8e Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 3 Feb 2003 22:00:30 +0000 Subject: 2003-02-03 Till Straumann PR 339/filesystem * src/chroot.c: Fix violation of FS node object copy semantics. --- cpukit/libcsupport/ChangeLog | 5 +++++ cpukit/libcsupport/src/chroot.c | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/cpukit/libcsupport/ChangeLog b/cpukit/libcsupport/ChangeLog index 93adbe6e70..84d1cf0726 100644 --- a/cpukit/libcsupport/ChangeLog +++ b/cpukit/libcsupport/ChangeLog @@ -1,3 +1,8 @@ +2003-02-03 Till Straumann + + PR 339/filesystem + * src/chroot.c: Fix violation of FS node object copy semantics. + 2003-01-10 Ralf Corsepius * Makefile.am: Eliminate OBJS. diff --git a/cpukit/libcsupport/src/chroot.c b/cpukit/libcsupport/src/chroot.c index 95124a43c0..357e328992 100644 --- a/cpukit/libcsupport/src/chroot.c +++ b/cpukit/libcsupport/src/chroot.c @@ -38,14 +38,17 @@ int chroot( rtems_set_errno_and_return_minus_one( ENOTSUP ); }; - loc = rtems_filesystem_root; /* save the value */ - result = chdir(pathname); if (result) { - rtems_filesystem_root = loc; /* restore the value */ rtems_set_errno_and_return_minus_one( errno ); }; - rtems_filesystem_root = rtems_filesystem_current; + /* clone the new root location */ + if (rtems_filesystem_evaluate_path(".", 0, &loc, 0)) { + /* our cwd has changed, though - but there is no easy way of return :-( */ + rtems_set_errno_and_return_minus_one( errno ); + } + rtems_filesystem_freenode(&rtems_filesystem_root); + rtems_filesystem_root = loc; return 0; } -- cgit v1.2.3