[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
> I will make necessary changes and resend the patch. > Here is a modified patch for further review and to apply if ok. Signed-off-by: Kamala Narasimhan <kamala.narasimhan@xxxxxxxxxx> diff -r fe8a177ae9cb tools/libxl/libxl.c --- a/tools/libxl/libxl.c Wed Jan 19 15:29:04 2011 +0000 +++ b/tools/libxl/libxl.c Wed Jan 19 12:41:11 2011 -0500 @@ -826,6 +826,41 @@ skip_autopass: /******************************************************************************/ +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; + } + + /* Return without further validation for empty cdrom drive. + Note: Post 4.1 we need to change the interface to handle empty + cdrom rather than go with the below assumption. + */ + if ( (strncmp(file_name, "", sizeof("")) == 0) && (disk_type == PHYSTYPE_PHY) ) + return 1; + + 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; +} + int libxl_device_disk_add(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk) { libxl__gc gc = LIBXL_INIT_GC(ctx); @@ -835,6 +870,9 @@ int libxl_device_disk_add(libxl_ctx *ctx int devid; libxl__device device; int major, minor, rc; + + if ( validate_virtual_disk(disk->physpath, disk->phystype) == 0 ) + return ERROR_FAIL; front = flexarray_make(16, 1); if (!front) { _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |