Fix a possible use-after-free.

If g_mapped_file_new fails, then `version` will be freed, but it was
already added to the hash table. This means there could be a
use-after-free while doing a lookup on the hash table the next time.
This commit is contained in:
Elliott Sales de Andrade 2019-01-31 16:46:38 -05:00
parent d17edde568
commit 6747ec55dd

View File

@ -1405,7 +1405,6 @@ enumerate_namespace_versions (const gchar *namespace,
g_free (version);
continue;
}
g_hash_table_insert (found_versions, version, version);
path = g_build_filename (dirname, entry, NULL);
mfile = g_mapped_file_new (path, FALSE, &error);
@ -1422,6 +1421,7 @@ enumerate_namespace_versions (const gchar *namespace,
candidate->path = path;
candidate->version = version;
candidates = g_slist_prepend (candidates, candidate);
g_hash_table_add (found_versions, version);
}
g_dir_close (dir);
index++;