Fix gvdb_table_write_contents_async()

It worked when I first wrote it, but I broke it during the late stages
of code review. str is already freed here, so this is a use-after-free
vulnerability for starters. It also causes the file saved to be always
empty.
This commit is contained in:
Michael Catanzaro 2019-06-27 16:58:03 -05:00
parent f586fa04c1
commit d83587b2a3

View File

@ -608,7 +608,9 @@ gvdb_table_write_contents_async (GHashTable *table,
g_task_set_task_data (task, data, (GDestroyNotify)write_contents_data_free);
g_task_set_source_tag (task, gvdb_table_write_contents_async);
g_file_replace_contents_async (file, str->str, str->len,
g_file_replace_contents_async (file,
g_bytes_get_data (bytes, NULL),
g_bytes_get_size (bytes),
NULL, FALSE,
G_FILE_CREATE_PRIVATE | G_FILE_CREATE_REPLACE_DESTINATION,
cancellable, replace_contents_cb, g_steal_pointer (&task));