summaryrefslogtreecommitdiffstats
path: root/src/indmanager
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@redhat.com>2013-11-05 17:52:47 +0100
committerTomas Bzatek <tbzatek@redhat.com>2013-11-06 17:29:48 +0100
commit0193e7ffd381e3ddff9fd4c66b3cf05d6a02c3e2 (patch)
tree3164ac6cd6ef4ce7a960c33826f371b4b00961b0 /src/indmanager
parentf9532a59568191f200c85cfbf82f940ccffad698 (diff)
downloadopenlmi-providers-0193e7ffd381e3ddff9fd4c66b3cf05d6a02c3e2.tar.gz
openlmi-providers-0193e7ffd381e3ddff9fd4c66b3cf05d6a02c3e2.tar.xz
openlmi-providers-0193e7ffd381e3ddff9fd4c66b3cf05d6a02c3e2.zip
indmanager: Fix empty enum cleanup
When the watcher() callback returns unsuccessfully and gather() part has not been run, we may end up with NULL enums that have been originally created by add_enumeration(). This prevents segfault in such case.
Diffstat (limited to 'src/indmanager')
-rw-r--r--src/indmanager/ind_manager.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/indmanager/ind_manager.c b/src/indmanager/ind_manager.c
index 7eb7b55..2fae132 100644
--- a/src/indmanager/ind_manager.c
+++ b/src/indmanager/ind_manager.c
@@ -1021,8 +1021,10 @@ bool maybe_remove_polled(IMManager *manager, CMPIObjectPath *op, IMError *err)
} else {
manager->enums->first = current->next;
}
- CMRelease(current->prev_enum);
- CMRelease(current->this_enum);
+ if (current->prev_enum)
+ CMRelease(current->prev_enum);
+ if (current->this_enum)
+ CMRelease(current->this_enum);
CMRelease(current->op);
}
return true;