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
|