Re: [PATCH] eCryptfs: Remove buggy and unnecessary write in file name decode routine

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2014-11-26 09:09:16, Michael Halcrow wrote:
> Dmitry Chernenkov used KASAN to discover that eCryptfs writes past the
> end of the allocated buffer during encrypted filename decoding. This
> fix corrects the issue by getting rid of the unnecessary 0 write when
> the current bit offset is 2.
> 
> Signed-off-by: Michael Halcrow <mhalcrow@xxxxxxxxxx>

I like this fix better than the other where you modified
ecryptfs_max_decoded_size() to return an extra byte.
ecryptfs_max_decoded_size() is actually returning the correct size
instead of being conservative, as the comments in that function suggest
so returning an extra byte doesn't make sense.

Also, the decode operation takes blocks of 4 encoded bytes down to 3
decoded bytes so there's no reason to zero the 4th decoded byte in the
sequence when there may not even be a 4th encoded byte.

So, this one gets my ack. I'll take it from here. I'll add the correct
tag to get it backported to the appropriate stable kernels and also give
Dmitry credit with a Reported-by tag.

Thanks!

Tyler

> ---
>  fs/ecryptfs/crypto.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
> index 2f6735d..31b148f 100644
> --- a/fs/ecryptfs/crypto.c
> +++ b/fs/ecryptfs/crypto.c
> @@ -1917,7 +1917,6 @@ ecryptfs_decode_from_filename(unsigned char *dst, size_t *dst_size,
>  			break;
>  		case 2:
>  			dst[dst_byte_offset++] |= (src_byte);
> -			dst[dst_byte_offset] = 0;
>  			current_bit_offset = 0;
>  			break;
>  		}
> -- 
> 2.2.0.rc0.207.ga3a616c
> 

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Crypto]     [Device Mapper Crypto]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux