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));
openSUSE Build Service is sponsored by