mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 02:48:08 +01:00
lib/config: move g_key_File_get_string before continue
In [1] Austin Ray reported some memory leaks in notmuch_database_open. One of those leaks is caused by jumping to the next key without freeing val. This change avoids that leak. [1]: id:20220105224538.m36lnjn7rf3ieonc@athena
This commit is contained in:
parent
8dab460a08
commit
df7c5acd75
1 changed files with 6 additions and 5 deletions
|
@ -435,11 +435,6 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
|
||||||
for (gchar **keys_p = keys; *keys_p; keys_p++) {
|
for (gchar **keys_p = keys; *keys_p; keys_p++) {
|
||||||
char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp, *keys_p);
|
char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp, *keys_p);
|
||||||
char *normalized_val;
|
char *normalized_val;
|
||||||
val = g_key_file_get_string (file, *grp, *keys_p, NULL);
|
|
||||||
if (! val) {
|
|
||||||
status = NOTMUCH_STATUS_FILE_ERROR;
|
|
||||||
goto DONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If we opened from a given path, do not overwrite it */
|
/* If we opened from a given path, do not overwrite it */
|
||||||
if (strcmp (absolute_key, "database.path") == 0 &&
|
if (strcmp (absolute_key, "database.path") == 0 &&
|
||||||
|
@ -447,6 +442,12 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
|
||||||
notmuch->xapian_db)
|
notmuch->xapian_db)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
val = g_key_file_get_string (file, *grp, *keys_p, NULL);
|
||||||
|
if (! val) {
|
||||||
|
status = NOTMUCH_STATUS_FILE_ERROR;
|
||||||
|
goto DONE;
|
||||||
|
}
|
||||||
|
|
||||||
normalized_val = _expand_path (notmuch, absolute_key, val);
|
normalized_val = _expand_path (notmuch, absolute_key, val);
|
||||||
_notmuch_string_map_set (notmuch->config, absolute_key, normalized_val);
|
_notmuch_string_map_set (notmuch->config, absolute_key, normalized_val);
|
||||||
g_free (val);
|
g_free (val);
|
||||||
|
|
Loading…
Reference in a new issue