From: "Venkateswararao Jujjuri (JV)" <jvrao@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: aliguori@us.ibm.com,
Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH -V4 20/26] virtio-9p: Hide user.virtfs xattr in case of mapped security.
Date: Sun, 29 Aug 2010 12:02:46 -0700 [thread overview]
Message-ID: <1283108572-20228-21-git-send-email-jvrao@linux.vnet.ibm.com> (raw)
In-Reply-To: <1283108572-20228-1-git-send-email-jvrao@linux.vnet.ibm.com>
From: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
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 <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
---
hw/virtio-9p-local.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 72 insertions(+), 3 deletions(-)
diff --git a/hw/virtio-9p-local.c b/hw/virtio-9p-local.c
index 461701a..7f847c6 100644
--- a/hw/virtio-9p-local.c
+++ b/hw/virtio-9p-local.c
@@ -478,18 +478,87 @@ 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)
-{
+ 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
next prev parent reply other threads:[~2010-08-29 18:53 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-29 19:02 [Qemu-devel] [PATCH-V4 00/26] Consolidated VirtFS work Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 01/26] qemu: virtio-9p: Recognize 9P2000.L protocol Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 02/26] qemu: virtio-9p: Implement statfs support in server Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 03/26] virtio-9p: Return correct error from v9fs_remove Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 04/26] [V4] virtio-9p: readdir implementation for 9p2000.L Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 05/26] virtio-9p: Compute iounit based on host filesystem block size Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 06/26] virtio-9p: getattr server implementation for 9P2000.L protocol Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 07/26] virtio-9p: Do not reset atime Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 08/26] [virtio-9p] Make v9fs_do_utimensat accept timespec structures instead of v9stat Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 09/26] virtio-9p: Implement server side of setattr for 9P2000.L protocol Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 10/26] [virtio-9p] Implement TLINK for 9P2000.L Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 11/26] [virtio-9p] Define and implement TSYMLINK " Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 12/26] [virtio-9p] This patch implements TLCREATE for 9p2000.L protocol Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 13/26] qemu: virtio-9p: Implement TMKNOD Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 14/26] qemu: virtio-9p: Implement TMKDIR Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 15/26] rename - change name of file or directory Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 16/26] [virtio-9p] qemu: virtio-9p: Implement LOPEN Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 17/26] virtio-9p: Add fidtype so that we can do type specific operation Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 18/26] virtio-9p: Implement TXATTRWALK Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 19/26] virtio-9p: Implement TXATTRCREATE Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` Venkateswararao Jujjuri (JV) [this message]
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 21/26] virtio-9p: Add SM_NONE security model Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 22/26] virtio-9p: Use lchown which won't follow symlink Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 23/26] virtio-9p: Fix the memset usage Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 24/26] [virtio-9p] Remove all instances of unnecessary dotu variable Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 25/26] [virtio-9p] This patch implements TLERROR/RLERROR on the qemu 9P server Venkateswararao Jujjuri (JV)
2010-08-29 19:02 ` [Qemu-devel] [PATCH -V4 26/26] virtio-9p: Change handling of flags in open() path for 9P2000.L Venkateswararao Jujjuri (JV)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1283108572-20228-21-git-send-email-jvrao@linux.vnet.ibm.com \
--to=jvrao@linux.vnet.ibm.com \
--cc=aliguori@us.ibm.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).