[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [V3 PATCH 5/8] virtio-9p: Create support in chroot envi
From: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] [V3 PATCH 5/8] virtio-9p: Create support in chroot environment |
Date: |
Tue, 18 Jan 2011 17:08:21 +0000 |
On Tue, Jan 18, 2011 at 6:25 AM, M. Mohan Kumar <address@hidden> wrote:
> Add both server & client side interfaces to create regular files in
> chroot environment
>
> Signed-off-by: M. Mohan Kumar <address@hidden>
> ---
> hw/9pfs/virtio-9p-chroot.c | 42 ++++++++++++++++++++++++++++++++++++++++++
> hw/9pfs/virtio-9p-local.c | 22 ++++++++++++++++++++--
> 2 files changed, 62 insertions(+), 2 deletions(-)
>
> diff --git a/hw/9pfs/virtio-9p-chroot.c b/hw/9pfs/virtio-9p-chroot.c
> index b599e23..e7f85e2 100644
> --- a/hw/9pfs/virtio-9p-chroot.c
> +++ b/hw/9pfs/virtio-9p-chroot.c
> @@ -193,6 +193,42 @@ static void chroot_do_open(V9fsFileObjectRequest
> *request, FdInfo *fd_info)
> }
> }
>
> +/*
> + * Helper routine to create a file and return the file descriptor and
> + * error status in FdInfo structure.
> + */
> +static void chroot_do_create(V9fsFileObjectRequest *request, FdInfo *fd_info)
> +{
> + int cur_uid, cur_gid;
uid_t cur_uid;
gid_t cur_gid;
> +
> + cur_uid = geteuid();
> + cur_gid = getegid();
> +
> + fd_info->fi_fd = -1;
> +
> + if (setfsuid(request->data.uid) < 0) {
> + fd_info->fi_error = errno;
> + return;
> + }
> + if (setfsgid(request->data.gid) < 0) {
> + fd_info->fi_error = errno;
> + goto unset_uid;
> + }
> +
> + fd_info->fi_fd = open(request->path.path, request->data.flags,
> + request->data.mode);
> +
> + if (fd_info->fi_fd < 0) {
> + fd_info->fi_error = errno;
> + } else {
> + fd_info->fi_error = 0;
> + }
> +
> + setfsgid(cur_gid);
> +unset_uid:
> + setfsuid(cur_uid);
> +}
> +
> static int chroot_daemonize(int chroot_sock)
> {
> sigset_t sigset;
> @@ -276,6 +312,12 @@ int v9fs_chroot(FsContext *fs_ctx)
> error = -2;
> }
> break;
> + case T_CREATE:
> + chroot_do_create(&request, &fd_info);
> + if (chroot_sendfd(chroot_sock, &fd_info) <= 0) {
> + error = -2;
> + }
> + break;
> default:
> break;
> }
> diff --git a/hw/9pfs/virtio-9p-local.c b/hw/9pfs/virtio-9p-local.c
> index 2376ec2..7f39b40 100644
> --- a/hw/9pfs/virtio-9p-local.c
> +++ b/hw/9pfs/virtio-9p-local.c
> @@ -52,6 +52,23 @@ static int __open(FsContext *fs_ctx, const char *path, int
> flags)
> return fd;
> }
>
> +static int __create(FsContext *fs_ctx, const char *path, int flags,
Please don't use identifiers starting with underscores.
- [Qemu-devel] [V3 PATCH 0/8] virtio-9p: Use chroot to safely access files in passthrough model, M. Mohan Kumar, 2011/01/18
- [Qemu-devel] [V3 PATCH 1/8] virtio-9p: Implement qemu_read_full, M. Mohan Kumar, 2011/01/18
- [Qemu-devel] [V3 PATCH 2/8] virtio-9p: Provide chroot environment server side interfaces, M. Mohan Kumar, 2011/01/18
- [Qemu-devel] [V3 PATCH 3/8] virtio-9p: Add client side interfaces for chroot environment, M. Mohan Kumar, 2011/01/18
- [Qemu-devel] [V3 PATCH 4/8] virtio-9p: Add support to open a file in chroot environment, M. Mohan Kumar, 2011/01/18
- [Qemu-devel] [V3 PATCH 5/8] virtio-9p: Create support in chroot environment, M. Mohan Kumar, 2011/01/18
- Re: [Qemu-devel] [V3 PATCH 5/8] virtio-9p: Create support in chroot environment,
Blue Swirl <=
- [Qemu-devel] [V3 PATCH 6/8] virtio-9p: Support for creating special files, M. Mohan Kumar, 2011/01/18
- [Qemu-devel] [V3 PATCH 8/8] virtio-9p: Chroot environment for other functions, M. Mohan Kumar, 2011/01/18
- [Qemu-devel] [V3 PATCH 7/8] virtio-9p: Move file post creation changes to none security model, M. Mohan Kumar, 2011/01/18
- Re: [Qemu-devel] [V3 PATCH 7/8] virtio-9p: Move file post creation changes to none security model, Venkateswararao Jujjuri (JV), 2011/01/20