Re: [PATCH v4 1/3] initramfs: add file metadata
From: Eugeniu Rosca <hidden>
Date: 2022-06-15 17:54:25
Also in:
linux-fsdevel, linux-integrity, linux-security-module, lkml
Hello Roberto, Hello Mimi, On Thu, May 23, 2019 at 02:18:01PM +0200, Roberto Sassu wrote:
From: Mimi Zohar <redacted>
This patch adds metadata to a file from a supplied buffer. The buffer might
contains multiple metadata records. The format of each record is:
<metadata len (ASCII, 8 chars)><version><type><metadata>
For now, only the TYPE_XATTR metadata type is supported. The specific
format of this metadata type is:
<xattr #N name>\0<xattr #N value>
[kamensky: fixed restoring of xattrs for symbolic links by using
sys_lsetxattr() instead of sys_setxattr()]
[sassu: removed state management, kept only do_setxattrs(), added support
for generic file metadata, replaced sys_lsetxattr() with
vfs_setxattr(), added check for entry_size, added check for
hdr->c_size, replaced strlen() with strnlen(); moved do_setxattrs()
before do_name()]
Signed-off-by: Mimi Zohar <redacted>
Signed-off-by: Victor Kamensky <redacted>
Signed-off-by: Taras Kondratiuk <redacted>
Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
---
include/linux/initramfs.h | 21 ++++++++++
init/initramfs.c | 88 ++++++++++++++++++++++++++++++++++++++-
2 files changed, 107 insertions(+), 2 deletions(-)
create mode 100644 include/linux/initramfs.h[..]
quoted hunk ↗ jump to hunk
+static int __init do_setxattrs(char *pathname, char *buf, size_t size) +{ + struct path path; + char *xattr_name, *xattr_value; + size_t xattr_name_size, xattr_value_size; + int ret; + + xattr_name = buf; + xattr_name_size = strnlen(xattr_name, size); + if (xattr_name_size == size) { + error("malformed xattrs"); + return -EINVAL; + } +
[..]
quoted hunk ↗ jump to hunk
+ + switch (hdr->c_type) { + case TYPE_XATTR: + do_setxattrs(pathname, buf + sizeof(*hdr), + entry_size - sizeof(*hdr));
Is it on purpose not to check the return value of do_setxattrs? I think I would have more comfort and piece of mind if I knew the return value is properly checked and acted upon. Otherwise, why returning an int from within do_setxattrs() at all? BR, Eugeniu