From a92c4ca1fb298f7752cea839aad3e46e510fd29b Mon Sep 17 00:00:00 2001 From: "Manuel Amador (Rudd-O)" Date: Mon, 15 Oct 2018 21:00:11 +0000 Subject: [PATCH] Fix handling of NUL data in inter-VM operations. --- bin/qubes-pass-client | 2 +- bin/qvm-pass | 2 +- etc/qubes-rpc/ruddo.PassManage | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/qubes-pass-client b/bin/qubes-pass-client index 6af5107..5bf342f 100755 --- a/bin/qubes-pass-client +++ b/bin/qubes-pass-client @@ -54,7 +54,7 @@ elif [ "$1" == "insert" ] ; then cmd=$(echo "$1" | base64 -w 0) key=$(echo "$2" | base64 -w 0) multiline=$(echo "$3" | base64 -w 0) - contents=$(echo "$4" | base64 -w 0) + contents=$(echo "$4") # Insert already sends its first parameters base64-encoded echo "$cmd $key $multiline diff --git a/bin/qvm-pass b/bin/qvm-pass index 260a95b..ea4da01 100755 --- a/bin/qvm-pass +++ b/bin/qvm-pass @@ -135,7 +135,7 @@ case "$1" in if [ "$multiline" == "1" ] ; then echo "Enter contents of $1 and press Ctrl+D when finished:" echo "" - contents=$(cat) + contents=$(cat | base64 -w 0) elif [ "$echo" == "1" ] ; then read -p "Enter password for $1: " contents >&2 else diff --git a/etc/qubes-rpc/ruddo.PassManage b/etc/qubes-rpc/ruddo.PassManage index a8a1aca..b2d4ae0 100644 --- a/etc/qubes-rpc/ruddo.PassManage +++ b/etc/qubes-rpc/ruddo.PassManage @@ -68,14 +68,14 @@ elif [ "$cmd" == "insert" ] ; then read -n 1048576 contents entry=$(echo "$entry" | base64 -d) multiline=$(echo "$multiline" | base64 -d) - contents=$(echo "$contents" | base64 -d) + contents=$(echo "$contents") logger -t ruddo.PassManage "creating password entry $entry" if [ "$multiline" == "1" ] ; then - echo "$contents" | pass insert --multiline --force -- "$entry" + echo "$contents" | base64 -d | pass insert --multiline --force -- "$entry" else - echo "$contents" | pass insert -e --force -- "$entry" + echo "$contents" | base64 -d | pass insert -e --force -- "$entry" fi elif [ "$cmd" == "rm" ] ; then