| #!/bin/sh | 
 |  | 
 | # dbus-daemon wrapper script for dbus-vmstate testing | 
 | # | 
 | # This script allows to tweak the dbus-daemon policy during the test | 
 | # to test different configurations. | 
 | # | 
 | # This program is free software; you can redistribute it and/or modify | 
 | # it under the terms of the GNU General Public License as published by | 
 | # the Free Software Foundation; either version 2 of the License, or | 
 | # (at your option) any later version. | 
 | # | 
 | # This program is distributed in the hope that it will be useful, | 
 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
 | # GNU General Public License for more details. | 
 | # | 
 | # You should have received a copy of the GNU General Public License | 
 | # along with this program; if not, see <http://www.gnu.org/licenses/>. | 
 | # | 
 | # Copyright (C) 2019 Red Hat, Inc. | 
 |  | 
 | write_config() | 
 | { | 
 |     CONF="$1" | 
 |     cat > "$CONF" <<EOF | 
 | <busconfig> | 
 |   <type>session</type> | 
 |   <listen>unix:tmpdir=$DBUS_VMSTATE_TEST_TMPDIR</listen> | 
 |  | 
 |   <policy context="default"> | 
 |      <!-- Holes must be punched in service configuration files for | 
 |           name ownership and sending method calls --> | 
 |      <deny own="*"/> | 
 |      <deny send_type="method_call"/> | 
 |  | 
 |      <!-- Signals and reply messages (method returns, errors) are allowed | 
 |           by default --> | 
 |      <allow send_type="signal"/> | 
 |      <allow send_requested_reply="true" send_type="method_return"/> | 
 |      <allow send_requested_reply="true" send_type="error"/> | 
 |  | 
 |      <!-- All messages may be received by default --> | 
 |      <allow receive_type="method_call"/> | 
 |      <allow receive_type="method_return"/> | 
 |      <allow receive_type="error"/> | 
 |      <allow receive_type="signal"/> | 
 |  | 
 |      <!-- Allow anyone to talk to the message bus --> | 
 |      <allow send_destination="org.freedesktop.DBus" | 
 |             send_interface="org.freedesktop.DBus" /> | 
 |      <allow send_destination="org.freedesktop.DBus" | 
 |             send_interface="org.freedesktop.DBus.Introspectable"/> | 
 |      <allow send_destination="org.freedesktop.DBus" | 
 |             send_interface="org.freedesktop.DBus.Properties"/> | 
 |      <!-- But disallow some specific bus services --> | 
 |      <deny send_destination="org.freedesktop.DBus" | 
 |            send_interface="org.freedesktop.DBus" | 
 |            send_member="UpdateActivationEnvironment"/> | 
 |      <deny send_destination="org.freedesktop.DBus" | 
 |            send_interface="org.freedesktop.DBus.Debug.Stats"/> | 
 |      <deny send_destination="org.freedesktop.DBus" | 
 |            send_interface="org.freedesktop.systemd1.Activator"/> | 
 |  | 
 |      <allow own="org.qemu.VMState1"/> | 
 |      <allow send_destination="org.qemu.VMState1"/> | 
 |      <allow receive_sender="org.qemu.VMState1"/> | 
 |  | 
 |   </policy> | 
 |  | 
 |   <include if_selinux_enabled="yes" | 
 |    selinux_root_relative="yes">contexts/dbus_contexts</include> | 
 |  | 
 | </busconfig> | 
 | EOF | 
 | } | 
 |  | 
 | ARGS= | 
 | for arg in "$@" | 
 | do | 
 |     case $arg in | 
 |         --config-file=*) | 
 |           CONF="${arg#*=}" | 
 |           write_config "$CONF" | 
 |           ARGS="$ARGS $1" | 
 |           shift | 
 |         ;; | 
 |         *) | 
 |           ARGS="$ARGS $1" | 
 |           shift | 
 |         ;; | 
 |     esac | 
 | done | 
 |  | 
 | exec dbus-daemon $ARGS |