diff options
author | Eric Biggers <[email protected]> | 2023-11-06 20:44:34 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <[email protected]> | 2024-01-25 14:37:35 -0800 |
commit | 3e47740091b05ac8d7836a33afd8646b6863ca52 (patch) | |
tree | 792506eb8e8796c4189dde70bb42986ae999cc8f | |
parent | 3fee45ee557aef5bfcd2b10e368c30bf3aef497a (diff) | |
download | linux-3e47740091b05ac8d7836a33afd8646b6863ca52.tar.gz |
f2fs: explicitly null-terminate the xattr list
commit e26b6d39270f5eab0087453d9b544189a38c8564 upstream.
When setting an xattr, explicitly null-terminate the xattr list. This
eliminates the fragile assumption that the unused xattr space is always
zeroed.
Signed-off-by: Eric Biggers <[email protected]>
Reviewed-by: Chao Yu <[email protected]>
Signed-off-by: Jaegeuk Kim <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
-rw-r--r-- | fs/f2fs/xattr.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/f2fs/xattr.c b/fs/f2fs/xattr.c index f44c60114379ed..dd50b747b671ee 100644 --- a/fs/f2fs/xattr.c +++ b/fs/f2fs/xattr.c @@ -741,6 +741,12 @@ static int __f2fs_setxattr(struct inode *inode, int index, memcpy(pval, value, size); last->e_value_size = cpu_to_le16(size); new_hsize += newsize; + /* + * Explicitly add the null terminator. The unused xattr space + * is supposed to always be zeroed, which would make this + * unnecessary, but don't depend on that. + */ + *(u32 *)((u8 *)last + newsize) = 0; } error = write_all_xattrs(inode, new_hsize, base_addr, ipage); |