WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] xl: Perform minimal validation of virtual disk f

To: Kamala Narasimhan <kamala.narasimhan@xxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] xl: Perform minimal validation of virtual disk file while parsing config file
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Fri, 14 Jan 2011 09:05:12 +0000
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Fri, 14 Jan 2011 01:06:09 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <AANLkTimSUym0u+SNm0AvNp3AZQQFspetAaXmNShkPJd4@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Citrix Systems, Inc.
References: <AANLkTimSUym0u+SNm0AvNp3AZQQFspetAaXmNShkPJd4@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Thu, 2011-01-13 at 15:35 +0000, Kamala Narasimhan wrote:
> This patch performs some very basic validation on the virtual disk
> file passed through the config file.  This validation ensures that we
> don't go too far with the initialization like spawn qemu and more
> while there could be some potentially fundamental issues.  Obviously,
> there is a lot of room for improvement in the kind of validations we
> could do but the below is a minimal first stab at it.  Please consider
> this for inclusion or feel free to tweak it as necessary.
> 
> Signed-off-by: Kamala Narasimhan <kamala.narasimhan@xxxxxxxxxx>

I wonder if the validation function should be part of libxl?

> Kamala
> 
> 
> diff -r ce208811f540 tools/libxl/xl_cmdimpl.c
> --- a/tools/libxl/xl_cmdimpl.c  Thu Jan 13 01:26:44 2011 +0000
> +++ b/tools/libxl/xl_cmdimpl.c  Thu Jan 13 10:16:57 2011 -0500
> @@ -432,6 +432,35 @@ static int parse_action_on_shutdown(cons
>  #define DSTATE_RW        5
>  #define DSTATE_TERMINAL  6
> 
> +static int validate_virtual_disk(char *file_name, libxl_disk_phystype
> disk_type)
> +{
> +    struct stat stat_buf;
> +
> +    if ( file_name == NULL )
> +    {
> +        fprintf(stderr, "Virtual disk file name is NULL!\n");
> +        return 0;
> +    }
> +
> +    if ( stat(file_name, &stat_buf) != 0 ) {
> +        fprintf(stderr, "Stat on virtual disk %s returned error - \"%s\".\n",
> +            file_name, strerror(errno));
> +        return 0;
> +    }
> +    if ( disk_type == PHYSTYPE_PHY ) {
> +        if ( !(S_ISBLK(stat_buf.st_mode)) ) {
> +            fprintf(stderr, "Virtual disk %s is not a block device!\n",
> +                file_name);
> +            return 0;
> +        }
> +    }else if ( stat_buf.st_size == 0 ) {
> +        fprintf(stderr, "Virtual disk %s size is 0!\n", file_name);
> +        return 0;
> +    }
> +
> +    return 1;
> +}
> +
>  static int parse_disk_config(libxl_device_disk *disk, char *buf2)
>  {
>      int state = DSTATE_INITIAL;
> @@ -485,6 +514,9 @@ static int parse_disk_config(libxl_devic
> 
>                  *p = '\0';
>                  disk->physpath = (*tok) ? strdup(tok) : NULL;
> +                if ( validate_virtual_disk(disk->physpath,
> disk->phystype) == 0 )
> +                    return 0;
> +
>                  tok = p + 1;
> 
>                  /* hack for ioemu disk spec */
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel