Re: [PATCH] eCryptfs: Regression in unencrypted filename symlinks

From: Dave Kleikamp
Date: Sat Feb 07 2009 - 11:14:18 EST


On Fri, 2009-02-06 at 18:06 -0600, Tyler Hicks wrote:
> The addition of filename encryption caused a regression in unencrypted
> filename symlink support. ecryptfs_copy_filename() is used when dealing
> with unencrypted filenames and it reported that the new, copied filename
> was a character longer than it should have been.
>
> This caused the return value of readlink() to count the NULL byte of the
> symlink target. Most applications don't care about the extra NULL byte,
> but a version control system (bzr) helped in discovering the bug.
>
> Signed-off-by: Tyler Hicks <tyhicks@xxxxxxxxxxxxxxxxxx>

Acked-by: Dave Kleikamp <shaggy@xxxxxxxxxxxxxxxxxx>

> ---
> fs/ecryptfs/crypto.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
> index c01e043..f6caeb1 100644
> --- a/fs/ecryptfs/crypto.c
> +++ b/fs/ecryptfs/crypto.c
> @@ -1716,7 +1716,7 @@ static int ecryptfs_copy_filename(char **copied_name, size_t *copied_name_size,
> {
> int rc = 0;
>
> - (*copied_name) = kmalloc((name_size + 2), GFP_KERNEL);
> + (*copied_name) = kmalloc((name_size + 1), GFP_KERNEL);
> if (!(*copied_name)) {
> rc = -ENOMEM;
> goto out;
> @@ -1726,7 +1726,7 @@ static int ecryptfs_copy_filename(char **copied_name, size_t *copied_name_size,
> * in printing out the
> * string in debug
> * messages */
> - (*copied_name_size) = (name_size + 1);
> + (*copied_name_size) = name_size;
> out:
> return rc;
> }
--
David Kleikamp
IBM Linux Technology Center

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/