Package: fakechroot Version: 2.5-1.1.20070227-1 Severity: normal (again, that's a local build version, but it is based on 2.5-1.1 with patches from other current bugs.)
The execve wrapper, correctly, expands the actual-filename argument because the kernel needs an unfake name. It then looks for a #! line, and if it finds one, expands the interpreter name. However, it then re-expands actual-filename when it adds it to the constructed command line... which is wrong on two counts: 1. It's already been expanded once already by that point 2. It shouldn't *get* expanded, since the interpreter will be calling wrapped-open on it anyway... Test case: $ fakeroot fakechroot debootstrap --variant=fakechroot sarge /tmp/testroot $ fakeroot fakechroot chroot /tmp/testroot # cat >> /tmp/foo.sh #!/bin/sh echo $0 dirname "$0" dir=`dirname "$0"` echo `cd "$dir"; pwd` # chmod +x /tmp/foo.sh # /tmp/foo.sh /tmp/testroot/tmp/foo.sh /tmp/testroot/tmp /tmp/testroot/tmp # exit (It's only the "echo $0" that matters, the test is just cooked down from what tomcat's jasper.sh actually does.) The fixed version, which is basically + const char *fake_filename = filename; - expand_chroot_path(filename, fakechroot_path, fakechroot_ptr, fakechroot_buf); - newargv[n++] = filename; + newargv[n++] = fake_filename; Causes the output to be /tmp/foo.sh /tmp /tmp which is (by inspection) correct. -- System Information: Debian Release: 3.1 Architecture: i386 (i686) Kernel: Linux 2.6.15-mc2 Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Versions of packages fakechroot depends on: ii libc6 2.3.2.ds1-22sarge4 GNU C Library: Shared libraries an -- debconf-show failed -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]