[evolution-data-server] Avoid use-after-free by unsetting open_finished flag sooner



commit ead989d2aefbe5cb9d371c3156600d0026e34c90
Author: Milan Crha <mcrha redhat com>
Date:   Thu Aug 25 13:32:15 2011 +0200

    Avoid use-after-free by unsetting open_finished flag sooner

 libedataserverui/e-client-utils.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/libedataserverui/e-client-utils.c b/libedataserverui/e-client-utils.c
index b69a4e0..9c6db34 100644
--- a/libedataserverui/e-client-utils.c
+++ b/libedataserverui/e-client-utils.c
@@ -467,6 +467,7 @@ finish_or_retry_open (EClientUtilsAsyncOpData *async_data, const GError *error)
 		e_client_process_authentication (async_data->client, async_data->used_credentials);
 	} else if (error && g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_BUSY)) {
 		/* postpone for 1/2 of a second, backend is busy now */
+		async_data->open_finished = FALSE;
 		async_data->retry_open_id = g_timeout_add (500, client_utils_retry_open_timeout_cb, async_data);
 	} else if (error) {
 		return_async_error (error, async_data->async_cb, async_data->async_cb_user_data, async_data->source, e_client_utils_open_new);
@@ -537,7 +538,6 @@ client_utils_retry_open_timeout_cb (gpointer user_data)
 
 	g_return_val_if_fail (async_data != NULL, FALSE);
 
-	async_data->open_finished = FALSE;
 	g_signal_handlers_disconnect_matched (async_data->cancellable, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, async_data);
 
 	e_client_open (async_data->client, async_data->only_if_exists, async_data->cancellable, client_utils_open_new_async_cb, async_data);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]