File pacemaker-pengine-error-handling-unpack-location-set.patch of Package pacemaker.3577
commit 03743bd258b7f7eac4b56cccb2c90d418a956fc6
Author: Ken Gaillot <kgaillot@redhat.com>
Date: Thu Jun 9 13:57:11 2016 -0500
Fix: pengine: better error handling when unpacking sets in location constraints
diff --git a/pengine/constraints.c b/pengine/constraints.c
index dd7d843..0f5055b 100644
--- a/pengine/constraints.c
+++ b/pengine/constraints.c
@@ -861,20 +861,24 @@ unpack_location_set(xmlNode * location, xmlNode * set, pe_working_set_t * data_s
{
xmlNode *xml_rsc = NULL;
resource_t *resource = NULL;
- const char *set_id = ID(set);
- const char *role = crm_element_value(set, "role");
- const char *local_score = crm_element_value(set, XML_RULE_ATTR_SCORE);
+ const char *set_id;
+ const char *role;
+ const char *local_score;
if (set == NULL) {
crm_config_err("No resource_set object to process.");
return FALSE;
}
+ set_id = ID(set);
if (set_id == NULL) {
crm_config_err("resource_set must have an id");
return FALSE;
}
+ role = crm_element_value(set, "role");
+ local_score = crm_element_value(set, XML_RULE_ATTR_SCORE);
+
for (xml_rsc = __xml_first_child(set); xml_rsc != NULL; xml_rsc = __xml_next_element(xml_rsc)) {
if (crm_str_eq((const char *)xml_rsc->name, XML_TAG_RESOURCE_REF, TRUE)) {
EXPAND_CONSTRAINT_IDREF(set_id, resource, ID(xml_rsc));