From 24125e8dc40ce68091e33473d39c6968d2de6365 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 24 Jul 2020 14:31:11 -0400 Subject: [PATCH] Unset IFS in shell scripts in the linux standalone build and OSX app. --- CHANGELOG | 1 + ..._7836dffec8167c51c91b96fba90bde27._comment | 26 +++++++++++++++++++ standalone/linux/skel/git | 1 + standalone/linux/skel/git-annex | 1 + standalone/linux/skel/git-annex-shell | 1 + standalone/linux/skel/git-annex-webapp | 1 + standalone/linux/skel/git-receive-pack | 1 + standalone/linux/skel/git-shell | 1 + standalone/linux/skel/git-upload-pack | 1 + standalone/linux/skel/runshell | 1 + .../osx/git-annex.app/Contents/MacOS/git | 1 + .../git-annex.app/Contents/MacOS/git-annex | 1 + .../Contents/MacOS/git-annex-shell | 1 + .../Contents/MacOS/git-annex-webapp | 1 + .../Contents/MacOS/git-receive-pack | 1 + .../git-annex.app/Contents/MacOS/git-shell | 1 + .../Contents/MacOS/git-upload-pack | 1 + .../osx/git-annex.app/Contents/MacOS/runshell | 1 + 18 files changed, 43 insertions(+) create mode 100644 doc/bugs/standalone_shim_is_segfaulting_if_IFS__61____36____39____92__013__39__/comment_2_7836dffec8167c51c91b96fba90bde27._comment diff --git a/CHANGELOG b/CHANGELOG index 4b1665c6ee..e56fac6c2a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,6 +11,7 @@ git-annex (8.20200720.2) UNRELEASED; urgency=medium * move, copy --to: Sped up seeking files by 2x. * drop: Sped up seeking files to drop by 2x, and also some performance improvements to checking numcopies. + * Unset IFS in shell scripts in the linux standalone build and OSX app. -- Joey Hess Tue, 21 Jul 2020 12:58:30 -0400 diff --git a/doc/bugs/standalone_shim_is_segfaulting_if_IFS__61____36____39____92__013__39__/comment_2_7836dffec8167c51c91b96fba90bde27._comment b/doc/bugs/standalone_shim_is_segfaulting_if_IFS__61____36____39____92__013__39__/comment_2_7836dffec8167c51c91b96fba90bde27._comment new file mode 100644 index 0000000000..fc550f3f44 --- /dev/null +++ b/doc/bugs/standalone_shim_is_segfaulting_if_IFS__61____36____39____92__013__39__/comment_2_7836dffec8167c51c91b96fba90bde27._comment @@ -0,0 +1,26 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 2""" + date="2020-07-24T18:17:12Z" + content=""" +Hmm, so runshell has some things like + + for lib in $(cat "$base/libdirs"); do + GIT_ANNEX_LD_LIBRARY_PATH=... + +Which, with an unusual IFS, probably set the environment variable to +something bogus. Which seems the kind of thing that could break things +badly enough to segfault. + +I have so far not been able to reproduce it, I tried: + + tar zxvf ~/src/git-annex/tmp/git-annex-standalone-amd64.tar.gz + cd git-annex.linux/ + IFS=$'\013' ./git-annex version + +But this may involve the system the standalone build is used in, if the +problem is this is breaking its isolation from that system. So might need a +particular version skew between the two. + +I've applied the obvious changes, so please verify the fix. +"""]] diff --git a/standalone/linux/skel/git b/standalone/linux/skel/git index 8a6860f43a..b2b09d9c98 100755 --- a/standalone/linux/skel/git +++ b/standalone/linux/skel/git @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/linux/skel/git-annex b/standalone/linux/skel/git-annex index ec9739a8bc..668eb8ad27 100755 --- a/standalone/linux/skel/git-annex +++ b/standalone/linux/skel/git-annex @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/linux/skel/git-annex-shell b/standalone/linux/skel/git-annex-shell index d663384915..9414b20919 100755 --- a/standalone/linux/skel/git-annex-shell +++ b/standalone/linux/skel/git-annex-shell @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/linux/skel/git-annex-webapp b/standalone/linux/skel/git-annex-webapp index 914c5923c1..710f49634a 100755 --- a/standalone/linux/skel/git-annex-webapp +++ b/standalone/linux/skel/git-annex-webapp @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/linux/skel/git-receive-pack b/standalone/linux/skel/git-receive-pack index f4f9f262aa..01d1f5925e 100755 --- a/standalone/linux/skel/git-receive-pack +++ b/standalone/linux/skel/git-receive-pack @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/linux/skel/git-shell b/standalone/linux/skel/git-shell index 0fc5cd7bdf..4947e47ed4 100755 --- a/standalone/linux/skel/git-shell +++ b/standalone/linux/skel/git-shell @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/linux/skel/git-upload-pack b/standalone/linux/skel/git-upload-pack index 312996cec5..11dc9a98df 100755 --- a/standalone/linux/skel/git-upload-pack +++ b/standalone/linux/skel/git-upload-pack @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/linux/skel/runshell b/standalone/linux/skel/runshell index d442627594..ec44d33647 100755 --- a/standalone/linux/skel/runshell +++ b/standalone/linux/skel/runshell @@ -3,6 +3,7 @@ # libraries bundled with this app. set -e +unset IFS os="$(uname -o 2>/dev/null || true)" base="$(dirname "$0")" diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git b/standalone/osx/git-annex.app/Contents/MacOS/git index ccf2cd7411..69ff306a94 100755 --- a/standalone/osx/git-annex.app/Contents/MacOS/git +++ b/standalone/osx/git-annex.app/Contents/MacOS/git @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-annex b/standalone/osx/git-annex.app/Contents/MacOS/git-annex index bb82a2bd9f..761630c08b 100755 --- a/standalone/osx/git-annex.app/Contents/MacOS/git-annex +++ b/standalone/osx/git-annex.app/Contents/MacOS/git-annex @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-annex-shell b/standalone/osx/git-annex.app/Contents/MacOS/git-annex-shell index 29ebc25887..6fa8a649ab 100755 --- a/standalone/osx/git-annex.app/Contents/MacOS/git-annex-shell +++ b/standalone/osx/git-annex.app/Contents/MacOS/git-annex-shell @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-annex-webapp b/standalone/osx/git-annex.app/Contents/MacOS/git-annex-webapp index 7ff18bada3..55d56ce688 100755 --- a/standalone/osx/git-annex.app/Contents/MacOS/git-annex-webapp +++ b/standalone/osx/git-annex.app/Contents/MacOS/git-annex-webapp @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-receive-pack b/standalone/osx/git-annex.app/Contents/MacOS/git-receive-pack index efbbf2bb30..e3099f0f24 100755 --- a/standalone/osx/git-annex.app/Contents/MacOS/git-receive-pack +++ b/standalone/osx/git-annex.app/Contents/MacOS/git-receive-pack @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-shell b/standalone/osx/git-annex.app/Contents/MacOS/git-shell index 7a74904f28..a9317e3649 100755 --- a/standalone/osx/git-annex.app/Contents/MacOS/git-shell +++ b/standalone/osx/git-annex.app/Contents/MacOS/git-shell @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-upload-pack b/standalone/osx/git-annex.app/Contents/MacOS/git-upload-pack index 5049371c9e..66ed2dc639 100755 --- a/standalone/osx/git-annex.app/Contents/MacOS/git-upload-pack +++ b/standalone/osx/git-annex.app/Contents/MacOS/git-upload-pack @@ -1,4 +1,5 @@ #!/bin/sh +unset IFS link="$(readlink "$0")" || true if [ -n "$link" ]; then base="$(dirname "$link")" diff --git a/standalone/osx/git-annex.app/Contents/MacOS/runshell b/standalone/osx/git-annex.app/Contents/MacOS/runshell index 557c59e224..f02a02e6b6 100755 --- a/standalone/osx/git-annex.app/Contents/MacOS/runshell +++ b/standalone/osx/git-annex.app/Contents/MacOS/runshell @@ -3,6 +3,7 @@ # bundled with this app. set -e +unset IFS base="$(dirname "$0")" -- 2.39.5