Bug 18229: Allow signals

Our previous fix went too far towards lockdown; many things rely
on signals to work, and there's no really good reason to restrict
which signals can be emitted on the bus because we can't tie
them to a particular sender.
This commit is contained in:
Colin Walters 2008-12-09 09:15:06 -05:00
parent 70a0ac620a
commit 920c3c0292
5 changed files with 60 additions and 1 deletions

View file

@ -50,6 +50,8 @@
even if they aren't in here -->
<allow send_destination="org.freedesktop.DBus"/>
<allow receive_sender="org.freedesktop.DBus"/>
<!-- Allow all signals to be sent by default -->
<allow send_type="signal"/>
<!-- allow sending valid replies -->
<allow send_requested_reply="true" send_type="method_return"/>
<allow send_requested_reply="true" send_type="error"/>

View file

@ -10,7 +10,7 @@ else
TESTS=
endif
EXTRA_DIST=run-test.sh
EXTRA_DIST=run-test.sh run-test-systemserver.sh test-wait-for-echo.py
if DBUS_BUILD_TESTS

View file

@ -39,3 +39,12 @@ if ! grep -q 'DBus.Error' echo-error-output.tmp; then
echo "====="
exit 1
fi
echo "running test echo signal"
if ! python ./test-wait-for-echo.py; then
echo "Failed test-wait-for-echo"
exit 1
fi
exit 0

View file

@ -0,0 +1,41 @@
#!/usr/bin/env python
import os,sys
try:
import gobject
import dbus
import dbus.mainloop.glib
except:
print "Failed import, aborting test"
sys.exit(0)
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
loop = gobject.MainLoop()
exitcode = 0
def handle_noreceipt():
print "Failed to get signal"
global exitcode
exitcode = 1
loop.quit()
gobject.timeout_add(7000, handle_noreceipt)
bus = dbus.SessionBus()
def sighandler(*args, **kwargs):
print "got signal"
loop.quit()
bus.add_signal_receiver(sighandler, dbus_interface='org.freedesktop.TestSuite', signal_name='Foo')
o = bus.get_object('org.freedesktop.DBus.TestSuiteEchoService', '/org/freedesktop/TestSuite')
i = dbus.Interface(o, 'org.freedesktop.TestSuite')
def nullhandler(*args, **kwargs):
pass
i.EmitFoo(reply_handler=nullhandler, error_handler=nullhandler)
loop.run()
sys.exit(exitcode)

View file

@ -29,6 +29,8 @@
even if they aren't in here -->
<allow send_destination="org.freedesktop.DBus"/>
<allow receive_sender="org.freedesktop.DBus"/>
<!-- Allow all signals to be sent by default -->
<allow send_type="signal"/>
<!-- valid replies are always allowed -->
<allow send_requested_reply="true" send_type="method_return"/>
<allow send_requested_reply="true" send_type="error"/>
@ -41,6 +43,11 @@
<policy context="default">
<allow own="org.freedesktop.DBus.TestSuiteEchoService"/>
<allow send_destination="org.freedesktop.DBus.TestSuiteEchoService"
send_interface="org.freedesktop.DBus.Introspectable"/>
<allow send_destination="org.freedesktop.DBus.TestSuiteEchoService"
send_interface="org.freedesktop.TestSuite"
send_member="EmitFoo"/>
</policy>
<!-- Config files are placed here that among other things,