[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH -V5 20/28] virtio-9p: Hide user.virtfs xattr in case
From: |
Venkateswararao Jujjuri (JV) |
Subject: |
[Qemu-devel] [PATCH -V5 20/28] virtio-9p: Hide user.virtfs xattr in case of mapped security. |
Date: |
Thu, 2 Sep 2010 12:39:40 -0700 |
From: Aneesh Kumar K.V <address@hidden>
With mapped security mode we use "user.virtfs" namespace is used
to store the virtFs related attributes. So hide it from user.
Signed-off-by: Aneesh Kumar K.V <address@hidden>
Signed-off-by: Venkateswararao Jujjuri <address@hidden>
---
hw/virtio-9p-local.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 70 insertions(+), 1 deletions(-)
diff --git a/hw/virtio-9p-local.c b/hw/virtio-9p-local.c
index 6c39256..3fc1712 100644
--- a/hw/virtio-9p-local.c
+++ b/hw/virtio-9p-local.c
@@ -477,18 +477,87 @@ static int local_statfs(FsContext *s, const char *path,
struct statfs *stbuf)
static ssize_t local_lgetxattr(FsContext *ctx, const char *path,
const char *name, void *value, size_t size)
{
+ if ((ctx->fs_sm == SM_MAPPED) &&
+ (strncmp(name, "user.virtfs.", 12) == 0)) {
+ /*
+ * Don't allow fetch of user.virtfs namesapce
+ * in case of mapped security
+ */
+ errno = ENOATTR;
+ return -1;
+ }
+
return lgetxattr(rpath(ctx, path), name, value, size);
}
static ssize_t local_llistxattr(FsContext *ctx, const char *path,
void *value, size_t size)
{
- return llistxattr(rpath(ctx, path), value, size);
+ ssize_t retval;
+ ssize_t actual_len = 0;
+ char *orig_value, *orig_value_start;
+ char *temp_value, *temp_value_start;
+ ssize_t xattr_len, parsed_len = 0, attr_len;
+
+ if (ctx->fs_sm != SM_MAPPED) {
+ return llistxattr(rpath(ctx, path), value, size);
+ }
+
+ /* Get the actual len */
+ xattr_len = llistxattr(rpath(ctx, path), value, 0);
+
+ /* Now fetch the xattr and find the actual size */
+ orig_value = qemu_malloc(xattr_len);
+ xattr_len = llistxattr(rpath(ctx, path), orig_value, xattr_len);
+
+ /*
+ * For mapped security model drop user.virtfs namespace
+ * from the list
+ */
+ temp_value = qemu_mallocz(xattr_len);
+ temp_value_start = temp_value;
+ orig_value_start = orig_value;
+ while (xattr_len > parsed_len) {
+ attr_len = strlen(orig_value) + 1;
+ if (strncmp(orig_value, "user.virtfs.", 12) != 0) {
+ /* Copy this entry */
+ strcat(temp_value, orig_value);
+ temp_value += attr_len;
+ actual_len += attr_len;
+ }
+ parsed_len += attr_len;
+ orig_value += attr_len;
+ }
+ if (!size) {
+ retval = actual_len;
+ goto out;
+ } else if (size >= actual_len) {
+ /* now copy the parsed attribute list back */
+ memset(value, 0, size);
+ memcpy(value, temp_value_start, actual_len);
+ retval = actual_len;
+ goto out;
+ }
+ errno = ERANGE;
+ retval = -1;
+out:
+ qemu_free(orig_value_start);
+ qemu_free(temp_value_start);
+ return retval;
}
static int local_lsetxattr(FsContext *ctx, const char *path, const char *name,
void *value, size_t size, int flags)
{
+ if ((ctx->fs_sm == SM_MAPPED) &&
+ (strncmp(name, "user.virtfs.", 12) == 0)) {
+ /*
+ * Don't allow fetch of user.virtfs namesapce
+ * in case of mapped security
+ */
+ errno = EACCES;
+ return -1;
+ }
return lsetxattr(rpath(ctx, path), name, value, size, flags);
}
--
1.6.5.2
- [Qemu-devel] [PATCH -V5 08/28] [virtio-9p] Make v9fs_do_utimensat accept timespec structures instead of v9stat., (continued)
- [Qemu-devel] [PATCH -V5 08/28] [virtio-9p] Make v9fs_do_utimensat accept timespec structures instead of v9stat., Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 12/28] [virtio-9p] This patch implements TLCREATE for 9p2000.L protocol., Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 10/28] [virtio-9p] Implement TLINK for 9P2000.L, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 11/28] [virtio-9p] Define and implement TSYMLINK for 9P2000.L, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 15/28] rename - change name of file or directory, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 16/28] [virtio-9p] qemu: virtio-9p: Implement LOPEN, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 13/28] qemu: virtio-9p: Implement TMKNOD, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 17/28] virtio-9p: Add fidtype so that we can do type specific operation, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 14/28] qemu: virtio-9p: Implement TMKDIR, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 18/28] virtio-9p: Implement TXATTRWALK, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 20/28] virtio-9p: Hide user.virtfs xattr in case of mapped security.,
Venkateswararao Jujjuri (JV) <=
- [Qemu-devel] [PATCH -V5 22/28] virtio-9p: Use lchown which won't follow symlink, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 19/28] virtio-9p: Implement TXATTRCREATE, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 23/28] virtio-9p: Fix the memset usage, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 24/28] virtio-9p: Add support for removing xattr, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 25/28] virtio-9p: Make sure -virtfs option works correctly, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 26/28] [virtio-9p] Remove all instances of unnecessary dotu variable., Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 21/28] virtio-9p: Add SM_NONE security model, Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 27/28] [virtio-9p] This patch implements TLERROR/RLERROR on the qemu 9P server., Venkateswararao Jujjuri (JV), 2010/09/02
- [Qemu-devel] [PATCH -V5 28/28] virtio-9p: Change handling of flags in open() path for 9P2000.L, Venkateswararao Jujjuri (JV), 2010/09/02