summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 7c2336d)
raw | patch | inline | side by side (parent: 7c2336d)
author | Florian Forster <octo@collectd.org> | |
Fri, 17 Nov 2017 13:34:39 +0000 (14:34 +0100) | ||
committer | Florian Forster <octo@collectd.org> | |
Fri, 17 Nov 2017 13:34:39 +0000 (14:34 +0100) |
br_name would leak when jumping to cleanup_fail.
CID: 179229
CID: 179229
src/ovs_stats.c | patch | blob | history |
diff --git a/src/ovs_stats.c b/src/ovs_stats.c
index 20b0dd1f0174fbd31104f837c82572f339bc4843..538386ae689fce2a15b2eb30948c20408015f20c 100644 (file)
--- a/src/ovs_stats.c
+++ b/src/ovs_stats.c
*/
static int ovs_stats_plugin_config(oconfig_item_t *ci) {
bridge_list_t *bridge;
- char *br_name;
for (int i = 0; i < ci->children_num; i++) {
oconfig_item_t *child = ci->children + i;
goto cleanup_fail;
}
/* get value */
- if ((br_name = strdup(child->values[j].value.string)) == NULL) {
- ERROR("%s: strdup() copy bridge name fail", plugin_name);
- goto cleanup_fail;
- }
+ char const *br_name = child->values[j].value.string;
if ((bridge = ovs_stats_get_bridge(g_monitored_bridge_list_head,
br_name)) == NULL) {
if ((bridge = calloc(1, sizeof(bridge_list_t))) == NULL) {
ERROR("%s: Error allocating memory for bridge", plugin_name);
goto cleanup_fail;
} else {
+ char *br_name_dup = strdup(br_name);
+ if (br_name_dup == NULL) {
+ ERROR("%s: strdup() copy bridge name fail", plugin_name);
+ goto cleanup_fail;
+ }
+
pthread_mutex_lock(&g_stats_lock);
/* store bridge name */
- bridge->name = br_name;
+ bridge->name = br_name_dup;
bridge->next = g_monitored_bridge_list_head;
g_monitored_bridge_list_head = bridge;
pthread_mutex_unlock(&g_stats_lock);