projects
/
claws.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix an use-after-free
[claws.git]
/
src
/
mimeview.c
diff --git
a/src/mimeview.c
b/src/mimeview.c
index 64bbdd9d8efdfb8eae2d3f3f66d081fc7cfcbc21..caec7d99b44108da3a622d2b64b6f5aa7743de8e 100644
(file)
--- a/
src/mimeview.c
+++ b/
src/mimeview.c
@@
-1119,13
+1119,14
@@
static void mimeview_check_data_reset(MimeView *mimeview)
pthread_cancel(mimeview->check_data->cancel_th);
}
pthread_cancel(mimeview->check_data->cancel_th);
}
- g_free(mimeview->check_data);
- mimeview->check_data = NULL;
-
if (must_free) {
debug_print("freeing deferred mimeinfo\n");
procmime_mimeinfo_free_all(mimeview->check_data->siginfo);
}
if (must_free) {
debug_print("freeing deferred mimeinfo\n");
procmime_mimeinfo_free_all(mimeview->check_data->siginfo);
}
+
+ g_free(mimeview->check_data);
+ mimeview->check_data = NULL;
+
if (must_destroy) {
debug_print("freeing deferred mimeview\n");
mimeview_free_mimeinfo(mimeview);
if (must_destroy) {
debug_print("freeing deferred mimeview\n");
mimeview_free_mimeinfo(mimeview);
@@
-1134,7
+1135,6
@@
static void mimeview_check_data_reset(MimeView *mimeview)
g_free(mimeview);
mimeviews = g_slist_remove(mimeviews, mimeview);
}
g_free(mimeview);
mimeviews = g_slist_remove(mimeviews, mimeview);
}
-
}
/* GUI update once the checker thread is done or killed */
}
/* GUI update once the checker thread is done or killed */