commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 18/53: Fix fakeroot and remap parsing corner cases


From: Samuel Thibault
Subject: [hurd] 18/53: Fix fakeroot and remap parsing corner cases
Date: Thu, 20 Mar 2014 02:23:50 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit 139cc36c4f24dbc8c759f6bc3fba536698db6e03
Author: Samuel Thibault <address@hidden>
Date:   Tue Feb 25 01:48:14 2014 -0500

    Fix fakeroot and remap parsing corner cases
    
    Fix case when $PWD contains spaces.
    Pass directly arguments to command, to directly avoid escaping issues.
    Based on suggestion by Ivan Shmakov <address@hidden>
    
    * utils/fakeroot.sh (TARGET): Do not define.
    (sh): Rather pass PWD and commandline as parameters.
    * utils/remap.sh: Likewise.
---
 utils/fakeroot.sh | 10 +++-------
 utils/remap.sh    |  9 ++-------
 2 files changed, 5 insertions(+), 14 deletions(-)

diff --git a/utils/fakeroot.sh b/utils/fakeroot.sh
index a64e963..6993365 100644
--- a/utils/fakeroot.sh
+++ b/utils/fakeroot.sh
@@ -54,16 +54,12 @@ if [ $# -eq 0 ]; then
   set -- ${SHELL:-/bin/sh}
 fi
 
-TARGET=
-until [ $# -eq 0 ]; do
-  TARGET="${TARGET} '$(echo "$1" | sed -e "s/'/'\\\\''/g")'"
-  shift
-done
-
 # We exec settrans, which execs the "fakeauth" command in the chroot context.
 # The `pwd` is evaluated here and now, and that result interpreted inside
 # the shell running under fakeauth to chdir there inside the chroot world.
 # That shell then execs our arguments as a command line.
 exec /bin/settrans --chroot \
-     /bin/fakeauth /bin/sh -c "cd `pwd`; exec ${TARGET}" \
+     /bin/fakeauth \
+     /bin/sh -c 'cd "$1" || exit ; shift ; exec "$@"' \
+     "$1" "$PWD" "$@" \
      -- / /hurd/fakeroot
diff --git a/utils/remap.sh b/utils/remap.sh
index 064f0f5..f24ed0e 100644
--- a/utils/remap.sh
+++ b/utils/remap.sh
@@ -57,16 +57,11 @@ if [ $# -eq 0 ]; then
   set -- ${SHELL:-/bin/sh}
 fi
 
-TARGET=
-until [ $# -eq 0 ]; do
-  TARGET="${TARGET} '$(echo "$1" | sed -e "s/'/'\\\\''/g")'"
-  shift
-done
-
 # We exec settrans, which execs the "fakeauth" command in the chroot context.
 # The `pwd` is evaluated here and now, and that result interpreted inside
 # the shell running under fakeauth to chdir there inside the chroot world.
 # That shell then execs our arguments as a command line.
 exec /bin/settrans --chroot \
-     /bin/sh -c "cd `pwd`; exec ${TARGET}" \
+     /bin/sh -c 'cd "$1" || exit ; shift ; exec "$@"' \
+     "$1" "$PWD" "$@" \
      -- / /hurd/remap $MAPPED

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]