[libvirt] [PATCH] umlAutostartDomain: avoid NULL-deref upon virGetLastError failure

Jim Meyering jim at meyering.net
Mon May 17 15:09:30 UTC 2010


Eric Blake wrote:
> On 05/17/2010 06:38 AM, Jim Meyering wrote:
>> Another...
>>
>>>From 09579adb73f04c5b940ad28cdfc242cff0726e0e Mon Sep 17 00:00:00 2001
>> From: Jim Meyering <meyering at redhat.com>
>> Date: Mon, 17 May 2010 14:38:14 +0200
>> Subject: [PATCH] umlAutostartDomain: avoid NULL-deref upon virGetLastError failure
>>
>> * src/uml/uml_driver.c (umlAutostartDomain): Handle a NULL return
>> from virGetLastError.
>> ---
>>  src/uml/uml_driver.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c
>> index 63fe808..ffb87c8 100644
>> --- a/src/uml/uml_driver.c
>> +++ b/src/uml/uml_driver.c
>> @@ -157,7 +157,7 @@ umlAutostartDomain(void *payload, const char *name ATTRIBUTE_UNUSED, void *opaqu
>>          if (umlStartVMDaemon(data->conn, data->driver, vm) < 0) {
>>              virErrorPtr err = virGetLastError();
>>              VIR_ERROR(_("Failed to autostart VM '%s': %s"),
>> -                      vm->def->name, err->message);
>> +                      vm->def->name, err ? err->message : "");
>
> That looks awkward to end with a trailing space.  Might it be better to use:
>
>  err ? err->message : _("unknown reason")
>
> At any rate, ACK that this fixes a potential NULL deref.

That's a good point.
I considered going one step further and changing
virGetLastError so that it never returns NULL,
instead returning a pointer to a static buffer where
err->message is something like "internal failure".

Otherwise, many uses of virGetLastError have to use the
same awkward idiom:

  err ? err->message : "..."

If no one objects to such a change, I'll add it to my low-priority list.




More information about the libvir-list mailing list