diff options
| -rw-r--r-- | fs/crypto/fname.c | 2 | ||||
| -rw-r--r-- | fs/f2fs/dir.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/fs/crypto/fname.c b/fs/crypto/fname.c index ccc2a8821..f71706b86 100644 --- a/fs/crypto/fname.c +++ b/fs/crypto/fname.c @@ -300,7 +300,7 @@ int fscrypt_fname_disk_to_usr(struct inode *inode, } else { memset(buf, 0, 8); } - memcpy(buf + 8, iname->name + iname->len - 16, 16); + memcpy(buf + 8, iname->name + ((iname->len - 17) & ~15), 16); oname->name[0] = '_'; oname->len = 1 + digest_encode(buf, 24, oname->name + 1); return 0; diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 1b70b1508..4ca57e3a3 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -140,8 +140,8 @@ struct f2fs_dir_entry *find_target_dentry(struct fscrypt_name *fname, #ifdef CONFIG_F2FS_FS_ENCRYPTION if (unlikely(!name->name)) { if (fname->usr_fname->name[0] == '_') { - if (de_name.len >= 16 && - !memcmp(de_name.name + de_name.len - 16, + if (de_name.len > 32 && + !memcmp(de_name.name + ((de_name.len - 17) & ~15), fname->crypto_buf.name + 8, 16)) goto found; goto not_match; |
