summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2005-07-17 19:36:24 +0000
committerJohn (J5) Palmieri <johnp@redhat.com>2005-07-17 19:36:24 +0000
commitb91870497d8303baf4c3fd0b8e7f90de44b753e1 (patch)
tree517b6cfdc938d24310f92d6783b03bfc955ad01b
parent8f854c99d85ea2df9f5e2be100a97ba2466bf988 (diff)
* NEWS: Updated to 0.35.2
* python/_dbus.py: Remove import of the dbus.services module as it no longer exists (patch from Dimitur Kirov) * python/service.py (Object::__init__): Fixed typo s/name/bus_name (patch from Dimitur Kirov) * python/examples/example-signal-emitter.py: import dbus.glib to get the main loop and use glib mainloop instead of gtk so X doesn't have to be running. * python/examples/example-signal-recipient.py: import dbus.glib to get the main loop and use glib mainloop instead of gtk so X doesn't have to be running. Import the decorators module directly. * test/glib/Makefile.am: Added DIST_EXTRA files that distcheck didn't pick up on but are needed to build * configure.in: upped version to 0.35.2 * bus/driver.c, bus/selinux.c, bus/selinux.h, dbus/dbus-protocol.h: added Colin Walters' SELinux API rename patch from head s/unix sercurity context/selinux security context/
-rw-r--r--ChangeLog30
-rw-r--r--NEWS5
-rw-r--r--bus/driver.c20
-rw-r--r--bus/selinux.c59
-rw-r--r--bus/selinux.h3
-rw-r--r--configure.in2
-rw-r--r--dbus/dbus-protocol.h2
-rw-r--r--python/_dbus.py1
-rw-r--r--python/examples/example-signal-emitter.py6
-rw-r--r--python/examples/example-signal-recipient.py13
-rw-r--r--python/service.py2
-rw-r--r--test/glib/Makefile.am5
12 files changed, 109 insertions, 39 deletions
diff --git a/ChangeLog b/ChangeLog
index 1011ff47..e391219d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2005-07-17 John (J5) Palmieri <johnp@redhat.com>
+
+ * NEWS: Update to 0.35.2
+
+2005-07-17 John (J5) Palmieri <johnp@redhat.com>
+
+ * python/_dbus.py: Remove import of the dbus.services
+ module as it no longer exists (patch from Dimitur Kirov)
+
+ * python/service.py (Object::__init__): Fixed typo
+ s/name/bus_name (patch from Dimitur Kirov)
+
+ * python/examples/example-signal-emitter.py: import dbus.glib
+ to get the main loop and use glib mainloop instead of gtk so
+ X doesn't have to be running.
+
+ * python/examples/example-signal-recipient.py: import dbus.glib
+ to get the main loop and use glib mainloop instead of gtk so
+ X doesn't have to be running. Import the decorators module
+ directly.
+
+ * test/glib/Makefile.am: Added DIST_EXTRA files that distcheck
+ didn't pick up on but are needed to build
+
+ * configure.in: upped version to 0.35.2
+
+ * bus/driver.c, bus/selinux.c, bus/selinux.h, dbus/dbus-protocol.h:
+ added Colin Walters' SELinux API rename patch from head
+ s/unix sercurity context/selinux security context/
+
2005-07-16 John (J5) Palmieri <johnp@redhat.com>
* python/Makefile.am: dbus_binding.pxd.in should be included
diff --git a/NEWS b/NEWS
index bfe67655..e582727b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,8 @@
+D-BUS 0.35.2 (17 July 2005)
+- Rename Unix Security Context to SELinux Security Context in API
+- Fixed more dist errors that distcheck didn't pick up on
+- Fixed various bugs in the python bindings that prevented them from working
+
D-BUS 0.35.1 (16 July 2005)
===
- Fixed dist error where python/dbus_bindings.pxd was being shipped
diff --git a/bus/driver.c b/bus/driver.c
index 8e8a5366..da4edaa7 100644
--- a/bus/driver.c
+++ b/bus/driver.c
@@ -1015,10 +1015,10 @@ bus_driver_handle_get_connection_unix_process_id (DBusConnection *connection,
}
static dbus_bool_t
-bus_driver_handle_get_connection_unix_security_context (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
- DBusError *error)
+bus_driver_handle_get_connection_selinux_security_context (DBusConnection *connection,
+ BusTransaction *transaction,
+ DBusMessage *message,
+ DBusError *error)
{
const char *service;
DBusString str;
@@ -1062,13 +1062,13 @@ bus_driver_handle_get_connection_unix_security_context (DBusConnection *connecti
if (!context)
{
dbus_set_error (error,
- DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN,
+ DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN,
"Could not determine security context for '%s'", service);
goto failed;
}
- if (! bus_selinux_append_context (reply, context))
- goto oom;
+ if (! bus_selinux_append_context (reply, context, error))
+ goto failed;
if (! bus_transaction_send_from_driver (transaction, connection, reply))
goto oom;
@@ -1167,10 +1167,10 @@ struct
DBUS_TYPE_STRING_AS_STRING,
DBUS_TYPE_UINT32_AS_STRING,
bus_driver_handle_get_connection_unix_process_id },
- { "GetConnectionUnixSecurityContext",
- DBUS_TYPE_STRING_AS_STRING,
+ { "GetConnectionSELinuxSecurityContext",
DBUS_TYPE_STRING_AS_STRING,
- bus_driver_handle_get_connection_unix_security_context },
+ DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_BYTE_AS_STRING,
+ bus_driver_handle_get_connection_selinux_security_context },
{ "ReloadConfig",
"",
"",
diff --git a/bus/selinux.c b/bus/selinux.c
index 2b88a60d..ad95f1c2 100644
--- a/bus/selinux.c
+++ b/bus/selinux.c
@@ -366,7 +366,7 @@ bus_selinux_check (BusSELinuxID *sender_sid,
{
if (!selinux_enabled)
return TRUE;
-
+
/* Make the security check. AVC checks enforcing mode here as well. */
if (avc_has_perm (SELINUX_SID_FROM_BUS (sender_sid),
override_sid ?
@@ -472,6 +472,7 @@ bus_selinux_allows_send (DBusConnection *sender,
unsigned long spid, tpid;
DBusString auxdata;
dbus_bool_t ret;
+ dbus_bool_t string_alloced;
if (!selinux_enabled)
return TRUE;
@@ -481,8 +482,10 @@ bus_selinux_allows_send (DBusConnection *sender,
if (!proposed_recipient || !dbus_connection_get_unix_process_id (proposed_recipient, &tpid))
tpid = 0;
+ string_alloced = FALSE;
if (!_dbus_string_init (&auxdata))
goto oom;
+ string_alloced = TRUE;
if (!_dbus_string_append (&auxdata, "msgtype="))
goto oom;
@@ -558,7 +561,8 @@ bus_selinux_allows_send (DBusConnection *sender,
return ret;
oom:
- _dbus_string_free (&auxdata);
+ if (string_alloced)
+ _dbus_string_free (&auxdata);
BUS_SET_OOM (error);
return FALSE;
@@ -569,18 +573,36 @@ bus_selinux_allows_send (DBusConnection *sender,
dbus_bool_t
bus_selinux_append_context (DBusMessage *message,
- BusSELinuxID *context)
+ BusSELinuxID *sid,
+ DBusError *error)
{
#ifdef HAVE_SELINUX
- /* Note if you change how the context is marshalled (e.g. to ay),
- * you also need to change driver.c for the appropriate return value.
- */
- return dbus_message_append_args (message,
- DBUS_TYPE_STRING,
- SELINUX_SID_FROM_BUS (context),
- DBUS_TYPE_INVALID);
+ char *context;
+
+ if (avc_sid_to_context (SELINUX_SID_FROM_BUS (sid), &context) < 0)
+ {
+ if (errno == ENOMEM)
+ BUS_SET_OOM (error);
+ else
+ dbus_set_error (error, DBUS_ERROR_FAILED,
+ "Error getting context from SID: %s\n",
+ _dbus_strerror (errno));
+ return FALSE;
+ }
+ if (!dbus_message_append_args (message,
+ DBUS_TYPE_ARRAY,
+ DBUS_TYPE_BYTE,
+ &context,
+ strlen (context),
+ DBUS_TYPE_INVALID))
+ {
+ _DBUS_SET_OOM (error);
+ return FALSE;
+ }
+ freecon (context);
+ return TRUE;
#else
- return FALSE;
+ return TRUE;
#endif
}
@@ -893,14 +915,19 @@ bus_selinux_shutdown (void)
if (!selinux_enabled)
return;
- sidput (bus_sid);
- bus_sid = SECSID_WILD;
-
+ _dbus_verbose ("AVC shutdown\n");
+
+ if (bus_sid != SECSID_WILD)
+ {
+ sidput (bus_sid);
+ bus_sid = SECSID_WILD;
+
#ifdef DBUS_ENABLE_VERBOSE_MODE
- bus_avc_print_stats ();
+ bus_avc_print_stats ();
#endif /* DBUS_ENABLE_VERBOSE_MODE */
- avc_destroy ();
+ avc_destroy ();
+ }
#endif /* HAVE_SELINUX */
}
diff --git a/bus/selinux.h b/bus/selinux.h
index 22339bc1..0d8353d8 100644
--- a/bus/selinux.h
+++ b/bus/selinux.h
@@ -46,7 +46,8 @@ void bus_selinux_id_table_print (DBusHashTable *service_table);
const char* bus_selinux_get_policy_root (void);
dbus_bool_t bus_selinux_append_context (DBusMessage *message,
- BusSELinuxID *context);
+ BusSELinuxID *context,
+ DBusError *error);
dbus_bool_t bus_selinux_allows_acquire_service (DBusConnection *connection,
BusSELinuxID *service_sid,
diff --git a/configure.in b/configure.in
index 0bad6d75..f3c454e0 100644
--- a/configure.in
+++ b/configure.in
@@ -3,7 +3,7 @@ AC_PREREQ(2.52)
AC_INIT(dbus/dbus.h)
-AM_INIT_AUTOMAKE(dbus, 0.35.1)
+AM_INIT_AUTOMAKE(dbus, 0.35.2)
AM_CONFIG_HEADER(config.h)
diff --git a/dbus/dbus-protocol.h b/dbus/dbus-protocol.h
index d9ac2434..fe51008d 100644
--- a/dbus/dbus-protocol.h
+++ b/dbus/dbus-protocol.h
@@ -237,7 +237,7 @@ extern "C" {
#define DBUS_ERROR_SPAWN_FAILED "org.freedesktop.DBus.Error.Spawn.Failed"
#define DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN "org.freedesktop.DBus.Error.UnixProcessIdUnknown"
#define DBUS_ERROR_INVALID_SIGNATURE "org.freedesktop.DBus.Error.InvalidSignature"
-#define DBUS_ERROR_UNIX_SECURITY_CONTEXT_UNKNOWN "org.freedesktop.DBus.Error.UnixSecurityContextUnknown"
+#define DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN "org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown"
#define DBUS_INTROSPECT_1_0_XML_NAMESPACE "http://www.freedesktop.org/standards/dbus"
#define DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
diff --git a/python/_dbus.py b/python/_dbus.py
index 652d27bd..7bab5856 100644
--- a/python/_dbus.py
+++ b/python/_dbus.py
@@ -46,7 +46,6 @@ import dbus_bindings
import dbus
from proxies import *
from exceptions import *
-from services import *
from matchrules import *
import re
diff --git a/python/examples/example-signal-emitter.py b/python/examples/example-signal-emitter.py
index f81ac3fb..02eff893 100644
--- a/python/examples/example-signal-emitter.py
+++ b/python/examples/example-signal-emitter.py
@@ -2,7 +2,8 @@
import dbus
import dbus.service
-import gtk
+import dbus.glib
+import gobject
class TestObject(dbus.service.Object):
def __init__(self, bus_name, object_path='/org/designfu/TestService/object'):
@@ -24,4 +25,5 @@ session_bus = dbus.SessionBus()
name = dbus.service.BusName('org.designfu.TestService', bus=session_bus)
object = TestObject(name)
-gtk.main()
+loop = gobject.MainLoop()
+loop.run()
diff --git a/python/examples/example-signal-recipient.py b/python/examples/example-signal-recipient.py
index 681dd7c2..558a41f0 100644
--- a/python/examples/example-signal-recipient.py
+++ b/python/examples/example-signal-recipient.py
@@ -1,7 +1,8 @@
#!/usr/bin/env python
-import gtk
import dbus
+import dbus.decorators
+import dbus.glib
import gobject
def handle_reply(msg):
@@ -11,7 +12,7 @@ def handle_error(e):
print str(e)
def emit_signal():
- #call the emitHelloSignal method async
+ #call the emitHelloSignal method
object.emitHelloSignal(dbus_interface="org.designfu.TestService")
#reply_handler = handle_reply, error_handler = handle_error)
return True
@@ -22,7 +23,7 @@ object = bus.get_object("org.designfu.TestService","/org/designfu/TestService/o
def hello_signal_handler(hello_string):
print ("Received signal and it says: " + hello_string)
-@dbus.explicitly_pass_message
+@dbus.decorators.explicitly_pass_message
def catchall_signal_handler(*args, **keywords):
#The dbus.handler directive passes in the special __dbus_message__ variable
dbus_message = keywords["dbus_message"]
@@ -33,7 +34,7 @@ def catchall_signal_handler(*args, **keywords):
def catchall_hello_signals_handler(hello_string):
print ("Received a hello signal and it says ") + hello_string
-@dbus.explicitly_pass_message
+@dbus.decorators.explicitly_pass_message
def catchall_testservice_interface_handler(hello_string, dbus_message):
print "org.designfu.TestService interface says " + hello_string + " when it sent signal " + dbus_message.get_member()
@@ -48,5 +49,5 @@ gobject.timeout_add(2000, emit_signal)
# Tell the remote object to emit the signal
-gtk.main()
-
+loop = gobject.MainLoop()
+loop.run()
diff --git a/python/service.py b/python/service.py
index 18a2c81b..f6a1c7fd 100644
--- a/python/service.py
+++ b/python/service.py
@@ -154,7 +154,7 @@ class Object:
def __init__(self, bus_name, object_path):
self._object_path = object_path
self._name = bus_name
- self._bus = name.get_bus()
+ self._bus = bus_name.get_bus()
self._connection = self._bus.get_connection()
diff --git a/test/glib/Makefile.am b/test/glib/Makefile.am
index 04d9c644..cf837c8f 100644
--- a/test/glib/Makefile.am
+++ b/test/glib/Makefile.am
@@ -78,3 +78,8 @@ test_profile_SOURCES= \
test_profile_LDADD= $(DBUS_GLIB_THREADS_LIBS) $(top_builddir)/glib/libdbus-glib-1.la
endif
+
+EXTRA_DIST = \
+ my-object-marshal.list \
+ test-service-glib.xml
+