*mri = remote_app_info;
port_info.port_name = strdup(remote_port);
+ if (port_info.port_name == NULL) {
+ ret_val = MESSAGEPORT_ERROR_OUT_OF_MEMORY;
+ goto out;
+ }
port_info.is_trusted = is_trusted;
cb_list = g_list_find_custom(remote_app_info->port_list, &port_info,
(GCompareFunc)__remote_port_compare_cb);
bundle_raw *raw = NULL;
message_port_local_port_info_s *mi;
int local_reg_id = 0;
- message_port_callback_info_s *callback_info;
+ message_port_callback_info_s *callback_info = NULL;
message_port_callback_info_s *head_callback_info;
GList *callback_info_list = NULL;
int fd_len;
int *returned_fds = NULL;
int fd;
+ bool ret = false;
g_variant_get(parameters, "(&s&sbb&s&sbu&s)", &local_appid, &local_port, &local_trusted, &bi_dir,
&remote_appid, &remote_port, &remote_trusted, &len, &raw);
callback_info->local_id = mi->local_id;
callback_info->remote_app_id = strdup(local_appid);
+ if (callback_info->remote_app_id == NULL) {
+ _LOGE("out of memory");
+ goto out;
+ }
callback_info->callback = mi->callback;
msg = g_dbus_method_invocation_get_message(invocation);
returned_fds = g_unix_fd_list_steal_fds(fd_list, &fd_len);
if (returned_fds == NULL) {
_LOGE("fail to get fds");
- __callback_info_free(callback_info);
- return false;
+ goto out;
}
fd = returned_fds[0];
callback_info->gio_read = g_io_channel_unix_new(fd);
if (!callback_info->gio_read) {
_LOGE("Error is %s\n", strerror_r(errno, buf, sizeof(buf)));
- __callback_info_free(callback_info);
- return false;
+ goto out;
}
callback_info->g_src_id = g_io_add_watch(callback_info->gio_read, G_IO_IN | G_IO_HUP,
__socket_request_handler, (gpointer)callback_info);
if (callback_info->g_src_id == 0) {
_LOGE("fail to add watch on socket");
- __callback_info_free(callback_info);
- return false;
+ goto out;
}
callback_info_list = g_hash_table_lookup(__callback_info_hash, GUINT_TO_POINTER(mi->local_id));
head_callback_info = (message_port_callback_info_s *)calloc(1, sizeof(message_port_callback_info_s));
if (head_callback_info == NULL) {
_LOGE("fail to alloc head_callback_info");
- __callback_info_free(callback_info);
- return false;
+ goto out;
}
head_callback_info->local_id = 0;
head_callback_info->remote_app_id = NULL;
else
mi->callback(mi->local_id, local_appid, NULL, false, data, NULL);
bundle_free(data);
+
+ ret = true;
out:
+ if (ret == false)
+ __callback_info_free(callback_info);
+
if (returned_fds)
free(returned_fds);
- return true;
+ return ret;
}
static int __check_remote_port(const char *remote_app_id, const char *remote_port, bool is_trusted, bool *exist)
char *local_appid = NULL;
int pid = __get_sender_pid(conn, sender);
int *watcher_id = (int *)calloc(1, sizeof(int));
+ char *_sender;
retvm_if(!watcher_id, false, "Malloc failed");
ret = aul_app_get_appid_bypid(pid, buffer, sizeof(buffer));
if (strncmp(buffer, local_appid, MAX_PACKAGE_STR_SIZE) == 0) {
_LOGD("insert sender !!!!! %s", sender);
- g_hash_table_insert(__sender_appid_hash, (gpointer)strdup(sender), GINT_TO_POINTER(pid));
+ _sender = strdup(sender);
+ if (_sender == NULL) {
+ _LOGE("out of memory");
+ free(watcher_id);
+ return false;
+ }
+ g_hash_table_insert(__sender_appid_hash, (gpointer)_sender, GINT_TO_POINTER(pid));
*watcher_id = g_bus_watch_name_on_connection(
__gdbus_conn,
sender,