Blame SOURCES/pacemaker-fix_services_prevent_use-of-null_in_g_error_free.patch

ed0026
commit 52146c384a606efb913ef932b23a34ca3105f878
ed0026
Author: Andrew Beekhof <andrew@beekhof.net>
ed0026
Date:   Thu Aug 8 12:50:29 2013 +1000
ed0026
ed0026
    Fix: services: Prevent use-of-NULL in g_error_free
ed0026
ed0026
diff --git a/lib/services/systemd.c b/lib/services/systemd.c
ed0026
index b18f86f..74cf53e 100644
ed0026
--- a/lib/services/systemd.c
ed0026
+++ b/lib/services/systemd.c
ed0026
@@ -264,7 +264,9 @@ systemd_unit_listall(void)
ed0026
 
ed0026
     if (error || _ret == NULL) {
ed0026
         crm_info("Call to ListUnits failed: %s", error ? error->message : "unknown");
ed0026
-        g_error_free(error);
ed0026
+        if(error) {
ed0026
+            g_error_free(error);
ed0026
+        }
ed0026
         return NULL;
ed0026
     }
ed0026
 
ed0026
@@ -308,9 +310,11 @@ systemd_unit_exists(const char *name)
ed0026
     pass = systemd_unit_by_name(systemd_proxy, name, &path, NULL, &error);
ed0026
 
ed0026
     if (error || pass == FALSE) {
ed0026
-        crm_err("Call to ListUnits failed: %s", error ? error->message : "unknown");
ed0026
-        g_error_free(error);
ed0026
         pass = FALSE;
ed0026
+        crm_err("Call to ListUnits failed: %s", error ? error->message : "unknown");
ed0026
+        if(error) {
ed0026
+            g_error_free(error);
ed0026
+        }
ed0026
 
ed0026
     } else {
ed0026
         crm_trace("Got %s", path);
ed0026
@@ -438,7 +442,9 @@ systemd_unit_exec(svc_action_t * op, gboolean synchronous)
ed0026
         if (error && strstr(error->message, "systemd1.NoSuchUnit")) {
ed0026
             op->rc = PCMK_EXECRA_NOT_INSTALLED;
ed0026
         }
ed0026
-        g_error_free(error);
ed0026
+        if(error) {
ed0026
+            g_error_free(error);
ed0026
+        }
ed0026
         goto cleanup;
ed0026
     }
ed0026
 
ed0026
@@ -480,7 +486,6 @@ systemd_unit_exec(svc_action_t * op, gboolean synchronous)
ed0026
         systemd_daemon_reload(systemd_proxy, &error);
ed0026
         if(error) {
ed0026
             g_error_free(error);
ed0026
-            error = NULL;
ed0026
         }
ed0026
         free(override_file);
ed0026
         free(override_dir);
ed0026
@@ -492,7 +497,9 @@ systemd_unit_exec(svc_action_t * op, gboolean synchronous)
ed0026
         unlink(override_file);
ed0026
         free(override_file);
ed0026
         systemd_daemon_reload(systemd_proxy, &error);
ed0026
-        g_error_free(error); error = NULL;
ed0026
+        if(error) {
ed0026
+            g_error_free(error);
ed0026
+        }
ed0026
 
ed0026
     } else if (g_strcmp0(action, "restart") == 0) {
ed0026
         action = "RestartUnit";
ed0026
diff --git a/lib/services/upstart.c b/lib/services/upstart.c
ed0026
index 357152b..f5fa189 100644
ed0026
--- a/lib/services/upstart.c
ed0026
+++ b/lib/services/upstart.c
ed0026
@@ -317,7 +317,9 @@ upstart_job_running(const gchar * name)
ed0026
     pass = upstart_job_by_name(upstart_proxy, name, &job, NULL, &error);
ed0026
     if (error || pass == FALSE) {
ed0026
         crm_err("Call to ListUnits failed: %s", error ? error->message : "unknown");
ed0026
-        g_error_free(error);
ed0026
+        if(error) {
ed0026
+            g_error_free(error);
ed0026
+        }
ed0026
 
ed0026
     } else {
ed0026
         char *instance = get_first_instance(job);