for (cur_node = cur; cur_node; cur_node = cur_node->next) {
if (cur_node->type == XML_ELEMENT_NODE) {
xml_plmn = (char *)xmlGetProp(cur_node, (const xmlChar *)"numeric");
- if (xml_plmn && !g_strcmp0(xml_plmn, imsi->plmn)) {
+ if (!xml_plmn)
+ continue;
+
+ if (!g_strcmp0(xml_plmn, imsi->plmn)) {
xml_spn = (char *)xmlGetProp(cur_node, (const xmlChar *)"spn");
xml_imsi_subset = (char *)xmlGetProp(cur_node, (const xmlChar *)"imsi_subset");
xml_fake_home_on = (char *)xmlGetProp(cur_node, (const xmlChar *)"fake_home_on");
key_matched = TRUE;
g_free(npi->eons_data->spn_override_info->imsi_subset);
npi->eons_data->spn_override_info->imsi_subset = g_strdup(xml_imsi_subset);
+ xmlFree(xml_imsi_subset);
} else {
info("[SPN_OVERRIDE] is not matched. check another field");
+ if (xml_plmn) xmlFree(xml_plmn);
+ if (xml_spn) xmlFree(xml_spn);
+ if (xml_imsi_subset) xmlFree(xml_imsi_subset);
+ if (xml_fake_home_on) xmlFree(xml_fake_home_on);
+ if (xml_fake_roaming_on) xmlFree(xml_fake_roaming_on);
+ if (xml_spn_display_rule) xmlFree(xml_spn_display_rule);
continue;
}
- xmlFree(xml_imsi_subset);
} else {
info("[SPN_OVERRIDE] We don't need to check key matching. This is candidate info");
}
xmlFree(xml_spn_display_rule);
}
- if (key_matched)
+ if (key_matched) {
+ xmlFree(xml_plmn);
break;
+ }
}
- if (xml_plmn)
- xmlFree(xml_plmn);
+ xmlFree(xml_plmn);
}
}