On Sun, Feb 13, 2011 at 10:45:24PM +0100, Christophe Fergeau wrote:
When creating the virDomain::snapshots hash table, virGetDomain
wasn't checking if the creation was successful. This would then
lead to failures in the vir*DomainSnapshot functions. Better to
report this error early and make virGetDomain fail if the
snapshots hash couldn't be created.
---
src/datatypes.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/src/datatypes.c b/src/datatypes.c
index 4f7373c..7cc37c1 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -359,6 +359,12 @@ virGetDomain(virConnectPtr conn, const char *name, const unsigned
char *uuid) {
ret->id = -1;
memcpy(&(ret->uuid[0]), uuid, VIR_UUID_BUFLEN);
ret->snapshots = virHashCreate(20);
+ if (ret->snapshots == NULL) {
+ virMutexUnlock(&conn->lock);
+ virLibConnError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("failed to create domain snapshots hash"));
+ goto error;
+ }
if (virHashAddEntry(conn->domains, uuidstr, ret) < 0) {
virMutexUnlock(&conn->lock);
ACK, and pushed, taht one should go in for 0.8.8 too.
The others which are more about refactoring and cleanups should wait a
bit until after the release,
thanks !
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/