Blame SOURCES/0022-common-remove-unnecessary-free.patch

400dab
From 9b8c21080286f943d0a19431bc8c0061f4833443 Mon Sep 17 00:00:00 2001
400dab
From: Ray Strode <rstrode@redhat.com>
400dab
Date: Thu, 30 Aug 2018 13:04:56 -0400
400dab
Subject: [PATCH 22/51] common: remove unnecessary free
400dab
400dab
This commit drops an erroneous free call, that would
400dab
potentially free a dangling pointer.
400dab
400dab
Luckily the error condition can never occur because the
400dab
error code checked is never returned, so the free call
400dab
is dead code.
400dab
400dab
This commit removes the free call.  A subsequent commit
400dab
will fix the error code checking.
400dab
---
400dab
 common/gdm-common.c | 4 +---
400dab
 1 file changed, 1 insertion(+), 3 deletions(-)
400dab
400dab
diff --git a/common/gdm-common.c b/common/gdm-common.c
400dab
index 59317a889..c909aceee 100644
400dab
--- a/common/gdm-common.c
400dab
+++ b/common/gdm-common.c
400dab
@@ -391,64 +391,62 @@ gdm_activate_session_by_id (GDBusConnection *connection,
400dab
         return TRUE;
400dab
 }
400dab
 
400dab
 gboolean
400dab
 gdm_get_login_window_session_id (const char  *seat_id,
400dab
 		                 char       **session_id)
400dab
 {
400dab
         gboolean   ret;
400dab
         int        res, i;
400dab
         char     **sessions;
400dab
         char      *service_id;
400dab
         char      *service_class;
400dab
         char      *state;
400dab
 
400dab
         res = sd_seat_get_sessions (seat_id, &sessions, NULL, NULL);
400dab
         if (res < 0) {
400dab
                 g_debug ("Failed to determine sessions: %s", strerror (-res));
400dab
                 return FALSE;
400dab
         }
400dab
 
400dab
         if (sessions == NULL || sessions[0] == NULL) {
400dab
                 *session_id = NULL;
400dab
                 ret = FALSE;
400dab
                 goto out;
400dab
         }
400dab
 
400dab
         for (i = 0; sessions[i]; i ++) {
400dab
 
400dab
                 res = sd_session_get_class (sessions[i], &service_class);
400dab
                 if (res < 0) {
400dab
-                        if (res == -ENOENT) {
400dab
-                                free (service_class);
400dab
+                        if (res == -ENOENT)
400dab
                                 continue;
400dab
-                        }
400dab
 
400dab
                         g_debug ("failed to determine class of session %s: %s", sessions[i], strerror (-res));
400dab
                         ret = FALSE;
400dab
                         goto out;
400dab
                 }
400dab
 
400dab
                 if (strcmp (service_class, "greeter") != 0) {
400dab
                         free (service_class);
400dab
                         continue;
400dab
                 }
400dab
 
400dab
                 free (service_class);
400dab
 
400dab
                 ret = sd_session_get_state (sessions[i], &state);
400dab
                 if (ret < 0) {
400dab
                         g_debug ("failed to determine state of session %s: %s", sessions[i], strerror (-res));
400dab
                         ret = FALSE;
400dab
                         goto out;
400dab
                 }
400dab
 
400dab
                 if (g_strcmp0 (state, "closing") == 0) {
400dab
                         free (state);
400dab
                         continue;
400dab
                 }
400dab
                 free (state);
400dab
 
400dab
                 res = sd_session_get_service (sessions[i], &service_id);
400dab
                 if (res < 0) {
400dab
                         g_debug ("failed to determine service of session %s: %s", sessions[i], strerror (-res));
400dab
                         ret = FALSE;
400dab
-- 
400dab
2.27.0
400dab