]> git.proxmox.com Git - mirror_corosync.git/commitdiff
config: Fix memory leak
authorChristine Caulfield <ccaulfie@redhat.com>
Fri, 20 Oct 2017 08:16:45 +0000 (09:16 +0100)
committerJan Friesse <jfriesse@redhat.com>
Mon, 23 Oct 2017 15:31:14 +0000 (17:31 +0200)
totem_volatile_config_set_string_value was not properly freeing memory.

Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
Reviewed-by: Jan Friesse <jfriesse@redhat.com>
exec/totemconfig.c

index 4eff3d1cfb147bdc2dd92c544c009babd2188eb8..0ec4663098b5bd1f76a25cc1099a06599ebd53da 100644 (file)
@@ -199,13 +199,18 @@ static void totem_volatile_config_set_string_value (struct totem_config *totem_c
        const char *key_name, const char *deleted_key, const char *default_value)
 {
        char runtime_key_name[ICMAP_KEYNAME_MAXLEN];
-       const void **config_value;
+       void **config_value;
+       void *old_config_ptr;
 
        config_value = totem_get_param_by_name(totem_config, key_name);
+       old_config_ptr = *config_value;
        if (icmap_get_string(key_name, totem_get_param_by_name(totem_config, key_name)) != CS_OK ||
            (deleted_key != NULL && strcmp(deleted_key, key_name) == 0)) {
-               *config_value = default_value;
+
+               /* Need to strdup() here so that the free() below works for a default and a configured value */
+               *config_value = strdup(default_value);
        }
+       free(old_config_ptr);
 
        /*
         * Store totem_config value to cmap runtime section