Fix coverity issues - memory leaks 12/228612/2
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Tue, 24 Mar 2020 06:51:24 +0000 (07:51 +0100)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Tue, 24 Mar 2020 07:53:46 +0000 (08:53 +0100)
Change-Id: I6c96a07b52a01b16b6e823d39b9b2a55e45ffbc5

src/client-api/dumpsys-system.c
src/service/dumpsys-service.c

index eb30ba1..6aaa013 100644 (file)
@@ -148,6 +148,7 @@ static void dump_handler(GDBusMethodInvocation *invocation)
                                                      DCA_ERROR,
                                                      DCA_ERROR_UNSPECIFIED_ERROR,
                                                      "memory allocation error");
+               close(fd);
                return;
        }
        dump_data->fd = fd;
index 4d3a534..a6b6782 100644 (file)
@@ -172,6 +172,7 @@ static GUnixFDList* prepare_unix_fd_list(int fd)
 
        if (g_unix_fd_list_append(fd_list, fd, &error) == -1) {
                LOGE("g_unix_fd_list_append error: %s\n", ERR_TEXT(error));
+               g_object_unref(fd_list);
                return NULL;
        }
        return fd_list;
@@ -182,30 +183,32 @@ static GDBusMessage* prepare_message(GVariant *parameters, GUnixFDList *fd_list)
        assert(parameters);
        assert(fd_list);
 
+       GDBusMessage *message = NULL;
+       char *new_name = NULL;
+
        GVariant *args = g_variant_get_child_value(parameters, 0);
        GVariant *name = g_variant_get_child_value(parameters, 1);
-
        const char *name_str = g_variant_get_string(name, NULL);
-       char *new_name = NULL;
+
        if (asprintf(&new_name, "%s.%s", DUMPSYS_SERVICE_NAME_PREFIX, name_str) == -1) {
                LOGE("asprintf() error: %m\n");
-               return NULL;
+               goto out;
        }
 
-       GDBusMessage *message = g_dbus_message_new_method_call(new_name,
-                                                              DUMPSYS_PATH,
-                                                              DUMPSYS_NAME,
-                                                              METHOD_DUMP);
-
-       g_variant_unref(name);
+       message = g_dbus_message_new_method_call(new_name,
+                                                DUMPSYS_PATH,
+                                                DUMPSYS_NAME,
+                                                METHOD_DUMP);
 
        GVariant *args_tuple = g_variant_new_tuple(&args, 1);
-       g_variant_unref(args);
 
        g_dbus_message_set_body(message, args_tuple);
        g_dbus_message_set_unix_fd_list(message, fd_list);
 
        free(new_name);
+out:
+       g_variant_unref(args);
+       g_variant_unref(name);
        return message;
 }