ecryptfs team mailing list archive
-
ecryptfs team
-
Mailing list archive
-
Message #00514
[Bug 322532] Re: ecryptfs does not handle symlinks within bzr
Thanks for the bug report Jamie, this one would have been easily to slip
by.
It looks like an off-by-one error in the eCryptfs kernel code. We're
tacking on an extra byte to the symlink target. Dustin pointed this out
to me and I was able to verify it with `strace readlink -n bar`. Here's
the interesting line:
readlink("bar", "foo", 64) = 4
It is reading 4 chars, but since we're adding an extra NULL character
(string terminator), most applications don't care. I'm guessing that
only something like a version control system would have caught it. :)
Working to trace down the problem now.
--
ecryptfs does not handle symlinks within bzr
https://bugs.launchpad.net/bugs/322532
You received this bug notification because you are a member of eCryptfs,
which is subscribed to ecryptfs-utils in ubuntu.
Status in “bzr” source package in Ubuntu: New
Status in “ecryptfs-utils” source package in Ubuntu: Confirmed
Status in “linux” source package in Ubuntu: New
Bug description:
Binary package hint: ecryptfs-utils
I have an encrypted ~/Private directory. If I have a bzr tree with symlinks in it, then the bzr tree is corrupted and unusable. Attached is a tarball of a bzr tree. Here is how to reproduce:
$ tar -zxvf ./bzr_links.tar.gz
bzr_links/
bzr_links/.bzr/
bzr_links/.bzr/repository/
...
bzr_links/bar
bzr_links/foo
$ cd bzr_links/
$ bzr status
modified:
bar@
$ bzr diff
bzr: ERROR: The dirstate file (DirState(u'/home/jamie/Private/tmp/bzr_links/.bzr/checkout/dirstate')) appears to be corrupt: Bad parse, we expected to end on \n, not: 51 jamie@xxxxxxxxxxxxx-20090128230411-z2544pvd154m265m: (('', 'bar', 'bar-20090128230356-oc73poh1gp2zfkho-1'), [('l', 'foo', 0L, 0, 'n'), ('AAAAA0mA6eVJgOnlAAAAGQAQow4AAKH/', 'l', 0L, 0, 'n')])
Do the above in a non-encrypted directory (on an ext3 partition) yields:
$ tar -zxvf ./bzr_links.tar.gz
bzr_links/
bzr_links/.bzr/
bzr_links/.bzr/repository/
...
bzr_links/bar
bzr_links/foo
$ cd bzr_links/
$ bzr status
$ bzr diff
$
The bzr tree was created like so:
$ mkdir bzr_links
$ cd bzr_links
$ bzr init
$ touch foo
$ bzr add
$ bzr ci
$ ln -s foo bar
$ bzr add
$ bzr ci
$ cd ../
$ tar -zcvf ./bzr_links.tar.gz ./bzr_links
References