[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xl: Perform minimal validation of virtual disk file while parsing config file
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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |