diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-06-21 21:52:51 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-06-21 21:52:51 +0000 |
commit | 5fcad6abebf97c6a06d9eb5c206d5c10bcf14eb7 (patch) | |
tree | 50bd7e336f03ca6fcf721905146b9cbfbcb0d40a | |
parent | 3a653f915b0e7de28e111665ba40b69ae6d6a235 (diff) |
dbus-helper: avoid seg fault when the object path data is not available(unregistered)
-rw-r--r-- | common/dbus-helper.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/common/dbus-helper.c b/common/dbus-helper.c index e80d49cd..488b1d2f 100644 --- a/common/dbus-helper.c +++ b/common/dbus-helper.c @@ -285,7 +285,7 @@ static DBusObjectPathVTable generic_table = { static void update_parent_data(DBusConnection *conn, const char *child_path) { - struct generic_data *data; + struct generic_data *data = NULL; char *parent_path, *slash; parent_path = g_strdup(child_path); @@ -350,10 +350,10 @@ dbus_bool_t dbus_connection_get_object_user_data(DBusConnection *connection, const char *path, void **data_p) { - struct generic_data *data; + struct generic_data *data = NULL; if (!dbus_connection_get_object_path_data(connection, path, - (void *) &data)) + (void *) &data) || !data) return FALSE; *data_p = data->user_data; @@ -367,11 +367,11 @@ dbus_bool_t dbus_connection_register_interface(DBusConnection *connection, DBusSignalVTable *signals, DBusPropertyVTable *properties) { - struct generic_data *data; + struct generic_data *data = NULL; struct interface_data *iface; if (!dbus_connection_get_object_path_data(connection, path, - (void *) &data)) + (void *) &data) || !data) return FALSE; if (find_interface(data->interfaces, name)) @@ -395,11 +395,11 @@ dbus_bool_t dbus_connection_register_interface(DBusConnection *connection, dbus_bool_t dbus_connection_unregister_interface(DBusConnection *connection, const char *path, const char *name) { - struct generic_data *data; + struct generic_data *data = NULL; struct interface_data *iface; if (!dbus_connection_get_object_path_data(connection, path, - (void *) &data)) + (void *) &data) || !data) return FALSE; iface = find_interface(data->interfaces, name); @@ -462,14 +462,15 @@ dbus_bool_t dbus_connection_emit_signal_valist(DBusConnection *conn, int first, va_list var_args) { - struct generic_data *data; + struct generic_data *data = NULL; struct interface_data *iface; DBusSignalVTable *sig_data; DBusMessage *signal; dbus_bool_t ret; const char *signature, *args = NULL; - if (!dbus_connection_get_object_path_data(conn, path, (void *) &data)) { + if (!dbus_connection_get_object_path_data(conn, path, + (void *) &data) || !data) { error("dbus_connection_emit_signal: path %s isn't registered", path); return FALSE; |