Date: Thu, 23 Aug 2012 21:15:17 -0400 From: Trent Nelson <trent@snakebite.org> To: <freebsd-fs@freebsd.org> Subject: chmod -h 000x against symlink has bizarre results on ZFS Message-ID: <20120824011517.GJ42732@snakebite.org>
next in thread | raw e-mail | index | archive | help
--3V7upXqbjpZ4EhLz Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Hi folks, I recently set up a FreeBSD build slave for the Python project, and noticed some symlink tests were failing in a very strange way (http://bugs.python.org/issue15748). When chmod -h 000x is done against a file/link of length less than 24, the target seems to get padded out to 24 with 0s. If it's longer than 24, it'll get truncated. 'x' can be 7, 6, 5 or 4 and the behaviour is the same. Here's the output from the attached test_readlink.sh, also available at http://bugs.python.org/file26979/test_readlink.sh: % ./test_readlink.sh ****** TEST 1: link/target length less than 24 ****** before chmod -h 0007: -rw-r----- /tmp/lt24 lrwxr-x--- /tmp/lt24.lnk->/tmp/lt24 python os.readlink(/tmp/lt24.lnk): '/tmp/lt24' after chmod -h 0007: -rw-r----- /tmp/lt24 l------rwx /tmp/lt24.lnk->/tmp/lt24 python os.readlink(/tmp/lt24.lnk): '/tmp/lt24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ target is padded out with NULLs to 24 ****** TEST 2: link/target length longer than 24 ****** before chmod -h 0007: -rw-r----- /tmp/definitelywaylongerthantwentyfour lrwxr-x--- /tmp/definitelywaylongerthantwentyfour.lnk->/tmp/definitelywaylongerthantwentyfour python os.readlink(/tmp/definitelywaylongerthantwentyfour.lnk): '/tmp/definitelywaylongerthantwentyfour' after chmod -h 0007: -rw-r----- /tmp/definitelywaylongerthantwentyfour l------rwx /tmp/definitelywaylongerthantwentyfour.lnk->/tmp/definitelywaylonger python os.readlink(/tmp/definitelywaylongerthantwentyfour.lnk): '/tmp/definitelywaylonger' ^^^^^^^^^^^^^^^^^^^^^^^^ target gets truncated to 24 ****** Other modes... ****** after chmod -h 0006: l------rw- /tmp/definitelywaylongerthantwentyfour.lnk->/tmp/definitelywaylonger after chmod -h 0005: l------r-x /tmp/definitelywaylongerthantwentyfour.lnk->/tmp/definitelywaylonger after chmod -h 0004: l------r-- /tmp/definitelywaylongerthantwentyfour.lnk->/tmp/definitelywaylonger after chmod -h 0000: l--------- /tmp/definitelywaylongerthantwentyfour.lnk->/tmp/definitelywaylongerthantwentyfour This only happens on ZFS. I'm on v28, don't have any v15s lying around. I'm perplexed. Can others reproduce it? Regards, Trent. --3V7upXqbjpZ4EhLz--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120824011517.GJ42732>