From 21bec492e83601891dc8a2ec60a1c96416086bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sun, 27 Mar 2016 04:30:44 +0200 Subject: [PATCH] qrexec: add service argument support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes QubesOS/qubes-issues#1876 Signed-off-by: Marek Marczykowski-Górecki --- qrexec/qubes-rpc-multiplexer | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/qrexec/qubes-rpc-multiplexer b/qrexec/qubes-rpc-multiplexer index e772d27..19d1369 100755 --- a/qrexec/qubes-rpc-multiplexer +++ b/qrexec/qubes-rpc-multiplexer @@ -13,19 +13,26 @@ if ! [ $# = 2 ] ; then exit 1 fi export QREXEC_REMOTE_DOMAIN="$2" +export QREXEC_SERVICE_FULL_NAME="$1" +SERVICE_WITHOUT_ARGUMENT="${1%%+*}" +if [ "${QREXEC_SERVICE_FULL_NAME}" != "${SERVICE_WITHOUT_ARGUMENT}" ]; then + export QREXEC_SERVICE_ARGUMENT="${QREXEC_SERVICE_FULL_NAME#*+}" +fi -for CFG_FILE in $LOCAL_QUBES_RPC/"$1" $QUBES_RPC/"$1"; do +for CFG_FILE in $LOCAL_QUBES_RPC/"$1" $QUBES_RPC/"$1" \ + $LOCAL_QUBES_RPC/"${SERVICE_WITHOUT_ARGUMENT}" \ + $QUBES_RPC/"${SERVICE_WITHOUT_ARGUMENT}"; do if [ -s "$CFG_FILE" ]; then break fi done if [ -x "$CFG_FILE" ] ; then - exec "$CFG_FILE" + exec "$CFG_FILE" ${QREXEC_SERVICE_ARGUMENT} echo "$0: failed to execute handler for" "$1" >&2 exit 1 else - exec /bin/sh "$CFG_FILE" + exec /bin/sh -- "$CFG_FILE" ${QREXEC_SERVICE_ARGUMENT} echo "$0: failed to execute handler for" "$1" >&2 exit 1 fi