diff options
Diffstat (limited to 'usr/src/lib/libshare/common/libshare.c')
-rw-r--r-- | usr/src/lib/libshare/common/libshare.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/usr/src/lib/libshare/common/libshare.c b/usr/src/lib/libshare/common/libshare.c index 4333566a47..5a5625d5c6 100644 --- a/usr/src/lib/libshare/common/libshare.c +++ b/usr/src/lib/libshare/common/libshare.c @@ -3402,8 +3402,11 @@ sa_get_protocol_section(sa_protocol_properties_t propset, char *section) char *proto; proto = sa_get_optionset_attr(propset, "type"); - if ((sa_proto_get_featureset(proto) & SA_FEATURE_HAS_SECTIONS) == 0) + if ((sa_proto_get_featureset(proto) & SA_FEATURE_HAS_SECTIONS) == 0) { + if (proto != NULL) + sa_free_attr_string(proto); return (propset); + } for (node = node->children; node != NULL; node = node->next) { @@ -3423,6 +3426,8 @@ sa_get_protocol_section(sa_protocol_properties_t propset, char *section) } if (value != NULL) xmlFree(value); + if (proto != NULL) + sa_free_attr_string(proto); if (node != NULL && xmlStrcmp(node->name, (xmlChar *)"section") != 0) { /* * avoid a non option node -- it is possible to be a @@ -3447,8 +3452,11 @@ sa_get_next_protocol_section(sa_property_t prop, char *find) char *proto; proto = sa_get_optionset_attr(prop, "type"); - if ((sa_proto_get_featureset(proto) & SA_FEATURE_HAS_SECTIONS) == 0) + if ((sa_proto_get_featureset(proto) & SA_FEATURE_HAS_SECTIONS) == 0) { + if (proto != NULL) + sa_free_attr_string(proto); return ((sa_property_t)NULL); + } for (node = ((xmlNodePtr)prop)->next; node != NULL; node = node->next) { @@ -3469,6 +3477,8 @@ sa_get_next_protocol_section(sa_property_t prop, char *find) } if (value != NULL) xmlFree(value); + if (proto != NULL) + sa_free_attr_string(proto); return ((sa_property_t)node); } |