Fix crash in jack_proxy

This was caused by using uninitialized DBusError.
g_dbus_error should be used instead.
This commit is contained in:
Nedko Arnaudov 2009-08-23 00:22:16 +03:00
parent 9a47ef6a66
commit 667a5830c0
3 changed files with 20 additions and 25 deletions

View File

@ -2,7 +2,7 @@
/*
* LADI Session Handler (ladish)
*
* Copyright (C) 2008 Nedko Arnaudov <nedko@arnaudov.name>
* Copyright (C) 2008, 2009 Nedko Arnaudov <nedko@arnaudov.name>
* Copyright (C) 2008 Juuso Alasuutari <juuso.alasuutari@gmail.com>
*
**************************************************************************
@ -30,6 +30,7 @@
#include "method.h"
#include "service.h"
#include "helpers.h"
/*
* Construct a void method return.
@ -210,17 +211,14 @@ method_return_verify(DBusMessage *msg,
if (!msg || dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_ERROR)
return true;
DBusError err;
const char *ptr;
dbus_error_init(&err);
if (!dbus_message_get_args(msg, &err,
if (!dbus_message_get_args(msg, &g_dbus_error,
DBUS_TYPE_STRING, &ptr,
DBUS_TYPE_INVALID)) {
lash_error("Cannot read description from D-Bus error message: %s ",
err.message);
dbus_error_free(&err);
g_dbus_error.message);
dbus_error_free(&g_dbus_error);
ptr = NULL;
}

View File

@ -32,6 +32,7 @@
#include "../common/safety.h"
#include "../common/debug.h"
#include "service.h"
#include "helpers.h"
service_t *
service_new(const char *service_name,
@ -47,7 +48,6 @@ service_new(const char *service_name,
lash_debug("Creating D-Bus service");
service_t *service;
DBusError err;
int r;
va_list argp;
object_path_t **path_pptr, *path_ptr;
@ -56,11 +56,9 @@ service_new(const char *service_name,
service->object_paths = lash_calloc(num_paths + 1,
sizeof(object_path_t *));
dbus_error_init(&err);
service->connection = dbus_bus_get(DBUS_BUS_SESSION, &err);
if (dbus_error_is_set(&err)) {
lash_error("Failed to get bus: %s", err.message);
service->connection = dbus_bus_get(DBUS_BUS_SESSION, &g_dbus_error);
if (dbus_error_is_set(&g_dbus_error)) {
lash_error("Failed to get bus: %s", g_dbus_error.message);
goto fail_free_err;
}
@ -72,9 +70,9 @@ service_new(const char *service_name,
if (service_name) {
r = dbus_bus_request_name(service->connection, service_name,
DBUS_NAME_FLAG_DO_NOT_QUEUE,
&err);
&g_dbus_error);
if (r == -1) {
lash_error("Failed to acquire bus name: %s", err.message);
lash_error("Failed to acquire bus name: %s", g_dbus_error.message);
goto fail_free_err;
} else if (r == DBUS_REQUEST_NAME_REPLY_EXISTS) {
lash_error("Requested bus name already exists");
@ -106,7 +104,7 @@ service_new(const char *service_name,
return service;
fail_free_err:
dbus_error_free(&err);
dbus_error_free(&g_dbus_error);
fail:
lash_free(&service->object_paths);

View File

@ -190,7 +190,6 @@ jack_proxy_init(
jack_proxy_callback_server_appeared server_appeared,
jack_proxy_callback_server_disappeared server_disappeared)
{
DBusError err;
char rule[1024];
const char ** signal;
@ -202,11 +201,11 @@ jack_proxy_init(
dbus_bus_add_match(
g_dbus_connection,
"type='signal',interface='"DBUS_INTERFACE_DBUS"',member=NameOwnerChanged,arg0='"JACKDBUS_SERVICE_NAME"'",
&err);
if (dbus_error_is_set(&err))
&g_dbus_error);
if (dbus_error_is_set(&g_dbus_error))
{
lash_error("Failed to add D-Bus match rule: %s", err.message);
dbus_error_free(&err);
lash_error("Failed to add D-Bus match rule: %s", g_dbus_error.message);
dbus_error_free(&g_dbus_error);
return false;
}
@ -218,11 +217,11 @@ jack_proxy_init(
"type='signal',sender='"JACKDBUS_SERVICE_NAME"',path='"JACKDBUS_OBJECT_PATH"',interface='"JACKDBUS_IFACE_CONTROL"',member='%s'",
*signal);
dbus_bus_add_match(g_dbus_connection, rule, &err);
if (dbus_error_is_set(&err))
dbus_bus_add_match(g_dbus_connection, rule, &g_dbus_error);
if (dbus_error_is_set(&g_dbus_error))
{
lash_error("Failed to add D-Bus match rule: %s", err.message);
dbus_error_free(&err);
lash_error("Failed to add D-Bus match rule: %s", g_dbus_error.message);
dbus_error_free(&g_dbus_error);
return false;
}
}