0d97e1d
From b28fcc053db224c11f1f88d2885eba88d60a7322 Mon Sep 17 00:00:00 2001
0d97e1d
From: Ernestas Kulik <ekulik@redhat.com>
0d97e1d
Date: Tue, 28 Jul 2020 15:39:43 +0200
0d97e1d
Subject: [PATCH] applet: application: Fix crash when processing deferred
0d97e1d
0d97e1d
Currently, when processing the deferred problems, if reporting fails,
0d97e1d
the problem is re-added to the queue, but the object is not
0d97e1d
re-referenced, leading to invalid reads later on.
0d97e1d
---
0d97e1d
 src/applet/abrt-applet-application.c | 12 ++++++------
0d97e1d
 1 file changed, 6 insertions(+), 6 deletions(-)
0d97e1d
0d97e1d
diff --git a/src/applet/abrt-applet-application.c b/src/applet/abrt-applet-application.c
0d97e1d
index 28e55135..4716524b 100644
0d97e1d
--- a/src/applet/abrt-applet-application.c
0d97e1d
+++ b/src/applet/abrt-applet-application.c
0d97e1d
@@ -771,11 +771,9 @@ handle_event_output_cb (GIOChannel   *gio,
0d97e1d
                         gpointer      data)
0d97e1d
 {
0d97e1d
     EventProcessingState *state;
0d97e1d
-    AbrtAppletProblemInfo *problem_info;
0d97e1d
     int status;
0d97e1d
 
0d97e1d
     state = data;
0d97e1d
-    problem_info = state->problem_info;
0d97e1d
 
0d97e1d
     /* Read streamed data and split lines */
0d97e1d
     for (;;)
0d97e1d
@@ -836,21 +834,23 @@ handle_event_output_cb (GIOChannel   *gio,
0d97e1d
 
0d97e1d
     if (WIFEXITED (status) && WEXITSTATUS (status) == EXIT_STOP_EVENT_RUN)
0d97e1d
     {
0d97e1d
-        abrt_applet_problem_info_set_known (problem_info, true);
0d97e1d
+        abrt_applet_problem_info_set_known (state->problem_info, true);
0d97e1d
         status = 0;
0d97e1d
     }
0d97e1d
 
0d97e1d
     if (status == 0)
0d97e1d
     {
0d97e1d
-        abrt_applet_problem_info_set_reported (problem_info, true);
0d97e1d
+        abrt_applet_problem_info_set_reported (state->problem_info, true);
0d97e1d
 
0d97e1d
         log_debug ("fast report finished successfully");
0d97e1d
-        abrt_applet_application_send_problem_notification (state->application, problem_info);
0d97e1d
+        abrt_applet_application_send_problem_notification (state->application,
0d97e1d
+                                                           state->problem_info);
0d97e1d
     }
0d97e1d
     else
0d97e1d
     {
0d97e1d
         log_debug ("fast report failed, deferring");
0d97e1d
-        g_ptr_array_add (state->application->deferred_problems, problem_info);
0d97e1d
+        g_ptr_array_add (state->application->deferred_problems,
0d97e1d
+                         g_steal_pointer (&state->problem_info));
0d97e1d
     }
0d97e1d
 
0d97e1d
     event_processing_state_free (state);
0d97e1d
-- 
0d97e1d
2.26.2
0d97e1d