mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-27 02:51:16 +00:00
While doing on this patch series, I mistakenly added a bogus piece of
storage XML to libvirtd, which was saved in /etc/libvirt/storage. On subsequent stop/start of libvirtd, because of another bug , an error wasn't being set properly in an error path, so libvirtd was SEGV'ing in storage_conf.c:virStoragePoolObjLoad when trying to dereference the NULL err returned from virGetLastError(). Make this more robust against errors by always doing "err ? err->message : NULL" in the printf. I looked around the tree and found a couple of other places that weren't guarded, so this patch fixes them as well. Signed-off-by: Chris Lalancette <clalance@redhat.com>
This commit is contained in:
parent
e98d8d7997
commit
c83c3e9e5c
@ -1,3 +1,9 @@
|
|||||||
|
Tue Oct 21 19:13:00 CEST 2008 Chris Lalancette <clalance@redhat.com>
|
||||||
|
* src/qemu_driver.c src/storage_conf.c src/network_driver.c
|
||||||
|
src/storage_driver.c: Shore up the uses of virGetLastError() so that
|
||||||
|
if a path forgets to set a virError, we don't crash while trying
|
||||||
|
to dereference the NULL pointer to print out.
|
||||||
|
|
||||||
Tue Oct 21 09:19:24 PDT 2008 Dan Smith <danms@us.ibm.com>
|
Tue Oct 21 09:19:24 PDT 2008 Dan Smith <danms@us.ibm.com>
|
||||||
* src/cgroup.c src/cgroup.h: Add function to allow major device range
|
* src/cgroup.c src/cgroup.h: Add function to allow major device range
|
||||||
* src/lxc_container.h src/controller.c: Fix cgroup initialization
|
* src/lxc_container.h src/controller.c: Fix cgroup initialization
|
||||||
|
@ -98,7 +98,8 @@ networkAutostartConfigs(struct network_driver *driver) {
|
|||||||
networkStartNetworkDaemon(NULL, driver, driver->networks.objs[i]) < 0) {
|
networkStartNetworkDaemon(NULL, driver, driver->networks.objs[i]) < 0) {
|
||||||
virErrorPtr err = virGetLastError();
|
virErrorPtr err = virGetLastError();
|
||||||
networkLog(NETWORK_ERR, _("Failed to autostart network '%s': %s\n"),
|
networkLog(NETWORK_ERR, _("Failed to autostart network '%s': %s\n"),
|
||||||
driver->networks.objs[i]->def->name, err->message);
|
driver->networks.objs[i]->def->name,
|
||||||
|
err ? err->message : NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,8 @@ qemudAutostartConfigs(struct qemud_driver *driver) {
|
|||||||
qemudStartVMDaemon(NULL, driver, driver->domains.objs[i], NULL) < 0) {
|
qemudStartVMDaemon(NULL, driver, driver->domains.objs[i], NULL) < 0) {
|
||||||
virErrorPtr err = virGetLastError();
|
virErrorPtr err = virGetLastError();
|
||||||
qemudLog(QEMUD_ERR, _("Failed to autostart VM '%s': %s\n"),
|
qemudLog(QEMUD_ERR, _("Failed to autostart VM '%s': %s\n"),
|
||||||
driver->domains.objs[i]->def->name, err->message);
|
driver->domains.objs[i]->def->name,
|
||||||
|
err ? err->message : NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1043,7 +1043,7 @@ virStoragePoolObjLoad(virConnectPtr conn,
|
|||||||
if (!(def = virStoragePoolDefParse(NULL, xml, file))) {
|
if (!(def = virStoragePoolDefParse(NULL, xml, file))) {
|
||||||
virErrorPtr err = virGetLastError();
|
virErrorPtr err = virGetLastError();
|
||||||
virStorageLog("Error parsing storage pool config '%s' : %s",
|
virStorageLog("Error parsing storage pool config '%s' : %s",
|
||||||
path, err->message);
|
path, err ? err->message : NULL);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,7 +232,7 @@ storageDriverShutdown(void) {
|
|||||||
backend->stopPool(NULL, pool) < 0) {
|
backend->stopPool(NULL, pool) < 0) {
|
||||||
virErrorPtr err = virGetLastError();
|
virErrorPtr err = virGetLastError();
|
||||||
storageLog("Failed to stop storage pool '%s': %s",
|
storageLog("Failed to stop storage pool '%s': %s",
|
||||||
pool->def->name, err->message);
|
pool->def->name, err ? err->message : NULL);
|
||||||
}
|
}
|
||||||
virStoragePoolObjClearVols(pool);
|
virStoragePoolObjClearVols(pool);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user