[evolution-data-server/gnome-2-30] Fix temporary exception handling for imapx fetch_new_messages()



commit 6d1386e5bd63a441fba70deff84fcd25467c1657
Author: David Woodhouse <David Woodhouse intel com>
Date:   Sat Jul 31 22:47:46 2010 +0100

    Fix temporary exception handling for imapx fetch_new_messages()
    
    Avoid a use-after-free by freeing the exception in imapx_job_done()

 camel/providers/imapx/camel-imapx-server.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 4beef21..161ceb7 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -1969,6 +1969,10 @@ imapx_job_done (CamelIMAPXServer *is, CamelIMAPXJob *job)
 
 	if (job->noreply) {
 		camel_exception_clear(job->ex);
+		if (job->type == IMAPX_JOB_FETCH_NEW_MESSAGES &&
+		    job->u.refresh_info.dummy_exception)
+			camel_exception_free (job->ex);
+
 		g_free(job);
 	} else
 		camel_msgport_reply((CamelMsg *) job);
@@ -3463,8 +3467,6 @@ cleanup:
 	g_array_free(job->u.refresh_info.infos, TRUE);
 
 	imapx_job_done (is, job);
-	if (job->u.refresh_info.dummy_exception)
-		camel_exception_free (job->ex);
 	camel_imapx_command_free (ic);
 }
 
@@ -3713,8 +3715,6 @@ exception:
 		camel_operation_unref (ic->job->op);
 
 	imapx_job_done (is, ic->job);
-	if (ic->job->u.refresh_info.dummy_exception)
-		camel_exception_free (ic->job->ex);
 	camel_imapx_command_free (ic);
 }
 



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