ext4: do not unnecessarily null-terminate encrypted symlink data
PATCH 1/1 ext4: do not unnecessarily null-terminate encrypted symlink data
Null-terminating the fscrypt_symlink_data on read is unnecessary because it is not string data --- it contains binary ciphertext.
Signed-off-by Eric Biggers <[email protected]>
--- fs/ext4/symlink.c | 2 -- 1 file changed, 2 deletions(-)
fs/ext4/symlink.c +0 -2
@@ -30,7 +30,6 @@ static const char *ext4_encrypted_get_link(struct dentry *dentry,char *caddr, *paddr =NULL ;struct fscrypt_str cstr, pstr;struct fscrypt_symlink_data *sd; -loff_t size =min_t (loff_t,i_size_read (inode),PAGE_SIZE -1 );int res;u32 max_size = inode->i_sb->s_blocksize;
@@ -49,7 +48,6 @@ static const char *ext4_encrypted_get_link(struct dentry *dentry,if (IS_ERR (cpage))return ERR_CAST (cpage); caddr =page_address (cpage); - caddr[size] =0 ; }/* Symlink is encrypted */
Signature · 1 line
2.8.0.rc3.226.g39d4020
PATCH 1/1 f2fs: do not unnecessarily null-terminate encrypted symlink data
Null-terminating the fscrypt_symlink_data on read is unnecessary because it is not string data --- it contains binary ciphertext.
Signed-off-by Eric Biggers <[email protected]>
--- fs/f2fs/namei.c | 2 -- 1 file changed, 2 deletions(-)
fs/f2fs/namei.c +0 -2
@@ -1010,7 +1010,6 @@ static const char *f2fs_encrypted_get_link(struct dentry *dentry,struct fscrypt_str cstr =FSTR_INIT (NULL ,0 );struct fscrypt_str pstr =FSTR_INIT (NULL ,0 );struct fscrypt_symlink_data *sd; -loff_t size =min_t (loff_t,i_size_read (inode),PAGE_SIZE -1 );u32 max_size = inode->i_sb->s_blocksize;int res;
@@ -1025,7 +1024,6 @@ static const char *f2fs_encrypted_get_link(struct dentry *dentry,if (IS_ERR (cpage))return ERR_CAST (cpage); caddr =page_address (cpage); - caddr[size] =0 ;/* Symlink is encrypted */ sd = (struct fscrypt_symlink_data *)caddr;
Signature · 1 line
2.8.0.rc3.226.g39d4020
PATCH 1/1 fscrypto: use standard macros to compute length of fname ciphertext
In reply to Eric BiggersSigned-off-by Eric Biggers <[email protected]>
--- fs/crypto/fname.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-)
fs/crypto/fname.c +5 -12
@@ -14,11 +14,6 @@#include <linux/ratelimit.h> #include <linux/fscrypto.h> -static u32 size_round_up (size_t size,size_t blksize) -{ -return ((size + blksize -1 ) / blksize) * blksize; -} -/** * fname_crypt_complete() - completion callback for filename crypto * @req: The asynchronous cipher request context
@@ -60,10 +55,9 @@ static int fname_encrypt(struct inode *inode,if (iname->len <=0 || iname->len > lim)return -EIO ; - ciphertext_len = (iname->len <FS_CRYPTO_BLOCK_SIZE ) ? -FS_CRYPTO_BLOCK_SIZE : iname->len; - ciphertext_len =size_round_up (ciphertext_len, padding); - ciphertext_len = (ciphertext_len > lim) ? lim : ciphertext_len; + ciphertext_len =max (iname->len, (u32 )FS_CRYPTO_BLOCK_SIZE ); + ciphertext_len =round_up (ciphertext_len, padding); + ciphertext_len =min (ciphertext_len, lim);if (ciphertext_len <=sizeof (buf)) { workbuf = buf;
@@ -233,9 +227,8 @@ u32 fscrypt_fname_encrypted_size(struct inode *inode, u32 ilen)if (ci) padding =4 << (ci->ci_flags &FS_POLICY_FLAGS_PAD_MASK ); -if (ilen <FS_CRYPTO_BLOCK_SIZE ) - ilen =FS_CRYPTO_BLOCK_SIZE ; -return size_round_up (ilen, padding); + ilen =max (ilen, (u32 )FS_CRYPTO_BLOCK_SIZE ); +return round_up (ilen, padding); }EXPORT_SYMBOL (fscrypt_fname_encrypted_size);
Signature · 1 line
2.8.0.rc3.226.g39d4020
Re: [PATCH] fscrypto: use standard macros to compute length of fname ciphertext
Quoted 4 lines · Eric Biggers
Null-terminating the
fscrypt_symlink_dataon read is unnecessary because it is not string data --- it contains binary ciphertext.Signed-off-by Eric Biggers <[email protected]>
Thanks, applied.
- Ted