Blob Blame History Raw
commit 52146c384a606efb913ef932b23a34ca3105f878
Author: Andrew Beekhof <andrew@beekhof.net>
Date:   Thu Aug 8 12:50:29 2013 +1000

    Fix: services: Prevent use-of-NULL in g_error_free

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