tags 548691 patch
thanks
I've just come across this. The problem is that the narrow_chroot_path
macro that applies the chroot to a particular path uses a substring
match and so misses the path if it contains extra "/./" type components.
Patch below. It seems to work. I haven't touched the test suite.
Robie.
diff --git a/src/libfakechroot.c b/src/libfakechroot.c
index e92ff1d..b319100 100644
--- a/src/libfakechroot.c
+++ b/src/libfakechroot.c
@@ -1212,6 +1212,18 @@ int chroot (const char *path)
}
}
+ ptr = tmp = dir;
+ for(ptr=tmp=dir; *ptr; ptr++) {
+ if (*ptr == '/' &&
+ *(ptr+1) && *(ptr+1) == '.' &&
+ (!*(ptr+2) || (*(ptr+2) == '/'))) {
+ ptr++;
+ } else {
+ *(tmp++) = *ptr;
+ }
+ }
+ *tmp = 0;
+
#if defined(HAVE_SETENV)
setenv("FAKECHROOT_BASE", dir, 1);
#else
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]