Commit 1984c23f authored by Tyler Hicks's avatar Tyler Hicks

eCryptfs: Clear buffer before reading in metadata xattr

We initially read in the first PAGE_CACHE_SIZE of a file to if the
eCryptfs header marker can be found.  If it isn't found and
ecryptfs_xattr_metadata was given as a mount option, then the
user.ecryptfs xattr is read into the same buffer.  Since the data from
the first page of the file wasn't cleared, it is possible that we think
we've found a second tag 3 or tag 1 packet and then error out after the
packet contents aren't as expected.  This patch clears the buffer before
filling it with metadata from the user.ecryptfs xattr.
Reviewed-by: default avatarEric Sandeen <sandeen@redhat.com>
Signed-off-by: default avatarTyler Hicks <tyhicks@linux.vnet.ibm.com>
parent fa3ef1cb
...@@ -1603,6 +1603,7 @@ int ecryptfs_read_metadata(struct dentry *ecryptfs_dentry) ...@@ -1603,6 +1603,7 @@ int ecryptfs_read_metadata(struct dentry *ecryptfs_dentry)
ecryptfs_dentry, ecryptfs_dentry,
ECRYPTFS_VALIDATE_HEADER_SIZE); ECRYPTFS_VALIDATE_HEADER_SIZE);
if (rc) { if (rc) {
memset(page_virt, 0, PAGE_CACHE_SIZE);
rc = ecryptfs_read_xattr_region(page_virt, ecryptfs_inode); rc = ecryptfs_read_xattr_region(page_virt, ecryptfs_inode);
if (rc) { if (rc) {
printk(KERN_DEBUG "Valid eCryptfs headers not found in " printk(KERN_DEBUG "Valid eCryptfs headers not found in "
......
...@@ -323,6 +323,7 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, ...@@ -323,6 +323,7 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry,
rc = ecryptfs_read_and_validate_header_region(page_virt, rc = ecryptfs_read_and_validate_header_region(page_virt,
ecryptfs_dentry->d_inode); ecryptfs_dentry->d_inode);
if (rc) { if (rc) {
memset(page_virt, 0, PAGE_CACHE_SIZE);
rc = ecryptfs_read_and_validate_xattr_region(page_virt, rc = ecryptfs_read_and_validate_xattr_region(page_virt,
ecryptfs_dentry); ecryptfs_dentry);
if (rc) { if (rc) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment