From 7104cad3a1ee09f87a51c8cdc006b18b93bfad32 Mon Sep 17 00:00:00 2001 From: Pawel Wieczorkiewicz Date: Thu, 17 Jul 2014 14:51:29 +0200 Subject: [PATCH] ifup: fix subnode of generation It should not check the w->device existance. --- client/ifup.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/client/ifup.c b/client/ifup.c index 9e088934e..e735e1ab9 100644 --- a/client/ifup.c +++ b/client/ifup.c @@ -46,7 +46,7 @@ #include "ifup.h" static xml_node_t * -__ni_ifup_generate_match_type_dev(ni_netdev_t *dev, ni_bool_t child) +__ni_ifup_generate_match_type_dev(ni_netdev_t *dev) { const char *type; xml_node_t *ret; @@ -57,9 +57,7 @@ __ni_ifup_generate_match_type_dev(ni_netdev_t *dev, ni_bool_t child) if (!(type = ni_linktype_type_to_name(dev->link.type))) return NULL; - ret = child ? xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_CHILD, NULL) : - xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_AND, NULL); - if (!ret) + if (!(ret = xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_AND, NULL))) return NULL; if (!xml_node_new_element(NI_NANNY_IFPOLICY_MATCH_DEV, ret, dev->name) || @@ -71,7 +69,7 @@ __ni_ifup_generate_match_type_dev(ni_netdev_t *dev, ni_bool_t child) } static xml_node_t * -__ni_ifup_generate_match_dev(xml_node_t *node, ni_ifworker_t *w, ni_bool_t child) +__ni_ifup_generate_match_dev(xml_node_t *node, ni_ifworker_t *w) { if (!node || !w || !w->name) return NULL; @@ -83,7 +81,7 @@ __ni_ifup_generate_match_dev(xml_node_t *node, ni_ifworker_t *w, ni_bool_t child if (w->device && ni_string_eq(w->name, w->device->name)) { xml_node_t * ret = NULL; - if ((ret = __ni_ifup_generate_match_type_dev(w->device, child))) { + if ((ret = __ni_ifup_generate_match_type_dev(w->device))) { xml_node_add_child(node, ret); return ret; } @@ -96,34 +94,36 @@ static xml_node_t * __ni_ifup_generate_match(ni_ifworker_t *w) { xml_node_t *match; - unsigned int i; if (!(match = xml_node_new(NI_NANNY_IFPOLICY_MATCH, NULL))) - return NULL; + goto error; - if (!__ni_ifup_generate_match_dev(match, w, FALSE)) { - xml_node_free(match); - return NULL; - } + if (!__ni_ifup_generate_match_dev(match, w)) + goto error; if (w->children.count) { - xml_node_t*or; + xml_node_t *or; + unsigned int i; if (!(or = xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_OR, match))) - return NULL; + goto error; for (i = 0; i < w->children.count; i++) { ni_ifworker_t *child = w->children.data[i]; + xml_node_t *cnode; - if (!__ni_ifup_generate_match_dev(or, child, TRUE)) { - xml_node_free(match); - return NULL; - } - } + if(!(cnode = xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_CHILD, or))) + goto error; + if (!__ni_ifup_generate_match_dev(cnode, child)) + goto error; + } } return match; +error: + xml_node_free(match); + return NULL; } static ni_bool_t