[libvirt] [PATCH] esx: Fix floppy.fileName handling in the vmx file parser

Doug Goldstein cardoe at gentoo.org
Thu Oct 10 20:15:45 UTC 2013


On Thu, Oct 10, 2013 at 2:21 PM, Eric Blake <eblake at redhat.com> wrote:
> On 10/09/2013 07:39 PM, Geoff Hickey wrote:
>> The vmx file parsing code was reporting errors when parsing floppy.fileName
>> entries if the filename didn't end in .flp. There is no such restriction in
>> ESX; even using the GUI to configure floppy filenames you can specify any
>> arbitrary file with any extension.
>>
>> Fix by changing the vmx parsing code so that it uses the floppy.fileType
>> value to determine whether floppy.fileName refers to a block device or a
>> regular file.
>> ---
>>  src/vmx/vmx.c | 26 +++++---------------------
>>  1 file changed, 5 insertions(+), 21 deletions(-)
>>
>> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
>> index 38b7cc0..ffe7e7a 100644
>> --- a/src/vmx/vmx.c
>> +++ b/src/vmx/vmx.c
>> @@ -2250,27 +2250,18 @@ virVMXParseDisk(virVMXContext *ctx,
>> virDomainXMLOptionPtr xmlopt, virConfPtr con
>>              goto cleanup;
>>          }
>>      } else if (device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) {
>> -        if (virFileHasSuffix(fileName, ".flp")) {
>> -            if (fileType != NULL) {
>> -                if (STRCASENEQ(fileType, "file")) {
>> -                    virReportError(VIR_ERR_INTERNAL_ERROR,
>> -                                   _("Expecting VMX entry '%s' to be
>> 'file' but "
>
> Your mailer corrupted your patch.  Would you mind resending it via 'git
> send-email', or at a bare minimum as an attachment rather than inline,
> so that maintainers can just 'git am' it?
>
> Applying: esx: Fix floppy.fileName handling in the vmx file parser
> fatal: corrupt patch at line 10
> Repository lacks necessary blobs to fall back on 3-way merge.
> Cannot fall back to three-way merge.
> Patch failed at 0001 esx: Fix floppy.fileName handling in the vmx file
> parser
>
> See also http://libvirt.org/hacking.html for hints.
>
>> +        if (fileType != NULL && STRCASEEQ(fileType, "device")) {
>
> It's simpler to just use a pointer variable in boolean context instead
> of explicit comparison against NULL (this isn't Java).  As in:
>
> if (fileType && STRCASEEQ(fileType, "device")) {
>
> At any rate, your change looks reasonable to me; I wouldn't mind
> applying it if you can resend to touch up those issues.
>
> --
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

FWIW, I've been fixing a number of these poor assumptions lately.
There's no limitation that there must be a fileName specified either
and the way the patch is formulated it will treat it as a fatal error
that there is a floppy drive defined with no file name for the floppy
image.

-- 
Doug Goldstein




More information about the libvir-list mailing list