mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38: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++) {
|
||||
char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp, *keys_p);
|
||||
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 (strcmp (absolute_key, "database.path") == 0 &&
|
||||
|
@ -447,6 +442,12 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
|
|||
notmuch->xapian_db)
|
||||
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);
|
||||
_notmuch_string_map_set (notmuch->config, absolute_key, normalized_val);
|
||||
g_free (val);
|
||||
|
|
Loading…
Reference in a new issue