[libvirt] [PATCH] virAsprintf: correctly check return value

Ján Tomko jtomko at redhat.com
Thu Jul 18 12:12:06 UTC 2013


On 07/18/2013 12:58 PM, Peter Krempa wrote:
> On 07/18/13 12:37, Ján Tomko wrote:
>> When virAsprintf was changed from a function to a macro
>> reporting OOM error in dc6f2da, it was documented as returning
>> 0 on success. This is incorrect, it returns the number of bytes
>> written as asprintf does.
>>
>> Some of the functions were converted to use virAsprintf's return
>> value directly, changing the return value on success from 0 to >= 0.
>>
>> For most of these, this is not a problem, but the change in
>> virPCIDriverDir breaks PCI passthrough.
>>
>> The return value check in virhashtest pre-dates virAsprintf OOM
>> conversion.
>>
>> vmwareMakePath seems to be unused.
>> ---
>>   src/util/virstring.h     | 10 ++++++----
>>   src/util/virpci.c        | 26 ++++++++++++++++++--------
>>   tests/virhashtest.c      |  2 +-
>>
>>   src/qemu/qemu_command.c  | 13 ++++++++++---
>>   src/qemu/qemu_process.c  |  6 ++++--
>>   src/util/virnetdev.c     | 10 +++++++---
>>   src/util/virrandom.c     |  6 ++++--
>>   src/vmware/vmware_conf.c | 15 ++++++++++++---
>>   8 files changed, 62 insertions(+), 26 deletions(-)
>>
> 
>>
>>   /**
>> diff --git a/src/util/virrandom.c b/src/util/virrandom.c
>> index e2d18f8..c233732 100644
>> --- a/src/util/virrandom.c
>> +++ b/src/util/virrandom.c
>> @@ -178,6 +178,8 @@ virRandomGenerateWWN(char **wwn,
>>           return -1;
>>       }
>>
>> -    return virAsprintf(wwn, "5" "%s%09llx", oui,
> 
> Hmmm, interresting construction of strings.
> 
>> -                       (unsigned long long)virRandomBits(36));
>> +    if (virAsprintf(wwn, "5" "%s%09llx", oui,
>> +                    (unsigned long long)virRandomBits(36)) < 0)
>> +        return -1;
>> +    return 0;
>>   }
> 
> ACK.
> 
> Peter
> 

Thanks, pushed now.

Jan




More information about the libvir-list mailing list